泰涨知识 | 【编程操作详解】Spark读写Hive

Spark读写Hive

一、 配置本地域名映射

(一) 查看集群配置

在Linux查看hosts文件:

复制代码
vi /etc/hosts

(二) 配置域名

将Linux中查看到的域名配置到Windows本地的hosts文件中:

复制代码
C:\Windows\System32\drivers\etc\hosts

**注意:**此文件有权限限制,不能直接修改。

**修改办法:**搜索记事本,使用管理员身份打开记事本,然后从记事本打开hosts文件,然后再修改。

二、 创建Hive表

(一) 启动Hadoop集群

要保证Hadoop集群是正常启动的。master和slave1节点上要能看到namenode守护进程。

(二)编写数据

1Linux本地编辑一个t_student.txt文件:

复制代码
vi ~/t_student.txt

2写入数据,保存并退出。

复制代码
1,zhangsan,male,182,lisi,female,20

(三)上传文件到HDFS根目录

复制代码
hdfs dfs -put ~/.t_student.txt /

(四)进入hive

复制代码
hive

(五)创建数据库

复制代码
--创建数据库create database sparktest;
--使用数据库use spark test;
--创建表create table student(id int, name string, gender string, age int) row format delimited fields terminated by "," stored as textfile ;--row format delimited fields terminated by "," 指定列分隔符为英文的逗号--stored as textfile 存储为文本文件
--加载数据load data inpath "/t_student.txt" overwrite into table student;--load data加载数据--inpath 指定路径--"/t_student.txt" 具体的HDFS的路径--overwrite into 覆盖写入--table 指定表--student 具体的表名

当执行完load data操作后,hdfs根目录下的t_student.txt文件会被移动到hive的数据目录下。

(六)查看数据

复制代码
select * from student;

三、 IDEA中编写Spark代码读取Hive数据

(一) 环境配置

将hive-site.xml(路径:HIVE_HOME/conf)、core-site.xml、hdfs-site.xml(路径:HADOOP_HOME/etc/hadoop)复制到IDEA项目的resource目录下。

(二) 编写代码

复制代码
import org.apache.spark.sql.SparkSession
/*** 使用DataFrame读取Hive表*/object spark_read_hive { def main(args: Array[String]): Unit = {
   //指定本地用户为root   System.setProperty("HADOOP_USER_NAME","root")
   //创建SparkSession,作用:连接Spark   val spark = SparkSession    .builder()    .master("local[*]") //指定运行的方式哦    .appName("spark_read_hive") //程序的名字    .enableHiveSupport() //开启Hive支持    .getOrCreate()
   //查询Hive表   //sparktest.student 数据库名.表名   val df = spark.sql("select * from student");   df.show()}}

四、 IDEA中编写Spark代码写入数据到Hiv

复制代码
import org.apache.spark.sql.{Row, SaveMode, SparkSession}import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
/*** 使用DataFrame写入数据到Hive*/object spark_write_hive { def main(args: Array[String]): Unit = {
   //指定本地用户为root   System.setProperty("HADOOP_USER_NAME", "root")
   //创建SparkSession,作用:连接Spark   val spark = SparkSession    .builder()    .master("local[*]") //指定运行的方式    .appName("spark_write_hive") //程序的名字    .enableHiveSupport() //开启Hive支持    .config("hive.exec.dynamic.partition", "true")//允许动态分区    .config("hive.exec.dynamic.partition.mode", "nonstrict")//允许非严格动态分区    .getOrCreate()
   //创建DataFrame   //1. 创建schema   val schema = StructType(List(     StructField("id", IntegerType, true),     StructField("name", StringType, true),     StructField("gender", StringType, true),     StructField("age", IntegerType, true)  ))
   //2. 创建rows   //2.1 创建RDD   val dataRDD = spark.sparkContext.parallelize(Array(     Array(3, "zhangsan", "男", 18),     Array(4, "lisi", "女", 20)  ))   //2.2 创建rows   val rows = dataRDD.map(x => Row(x(0), x(1), x(2), x(3)))   //3. 合并   val df = spark.createDataFrame(rows, schema)
   //df.show()
   //写入Hive   //方法一:通过临时表使用SQL语句添加数据   //   df.createOrReplaceTempView("tmpTable")   //   spark.sql("insert into student select * from tmpTable")
   //方法二:通过DataFrame直接写入hive表   df.write.mode(SaveMode.Append)    .format("hive")//指定写入的表是Hive    .partitionBy("name")//指定分区为name字段    .saveAsTable("sparktest.student")}}
相关推荐
redaijufeng1 小时前
万象生鲜系统功能介绍
大数据
2601_957780843 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
一只积极向上的小咸鱼4 小时前
嵌套 Git 仓库 / gitlink / submodule 问题总结
大数据·git·elasticsearch
eastyuxiao5 小时前
第二章 数字孪生核心技术体系
大数据·人工智能·数字孪生
andy_haiying6 小时前
深圳网站建设公司推荐哪家好?2026年5月官网制作服务商综合评测
大数据·人工智能
zxrhhm6 小时前
PostgreSQL 大规模随机数据生成完整指南
大数据·数据库·postgresql
飞飞传输7 小时前
数字化科研提速关键 构建安全可控一体化跨网数据传输体系
大数据·运维·安全
Elastic 中国社区官方博客7 小时前
Elastic 的 AI agent skills
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
陕西字符7 小时前
2026 西安小微企业地图与 AI 问答排名优化:专业技术指南与落地方案
大数据·人工智能
MetrixAeroCore7 小时前
车规级国际物联卡是什么?车载物联网硬件选型与行业标准解析
大数据·物联网