泰涨知识 | 【编程操作详解】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")}}
相关推荐
qiaozhangmenai7 小时前
2026年AI超级公司系统行业趋势与技术演进分析|AI营销闭环|乔掌门AI
大数据·人工智能
xiaohaiAIgeo7 小时前
【2026年】基于三维建模的实验室智慧管理平台:暖通能源照明的数字孪生方案
大数据·数据库·人工智能·科普知识
森普智慧农业7 小时前
邛崃大梁酒庄:以酒旅融合赋能乡村振兴的示范样板
大数据·科技·生活·旅游
董可伦7 小时前
Spark 源码 | SparkSubmitArguments 参数解析(三)
大数据·分布式·spark
AIGS0017 小时前
突破语义鸿沟:从向量空间JBoltAI看企业大脑构建逻辑
java·大数据·人工智能·人工智能ai大模型应用
栋***t7 小时前
2026金融、政务等高数据安全与合规行业的在线考试系统选型之道
大数据·金融·开源软件·政务·无纸化
珠海西格电力8 小时前
西格电力零碳园区管理系统:核心功能全解析,赋能园区低碳智能化落地
大数据·运维·网络·人工智能·信息可视化·能源
CoreTK芯通康EMC整改8 小时前
Type-C 高速接口 ESD 失效深度解析:器件选型 + PCB 布局双重解决方案
大数据·网络·emc·芯通康·pcb电磁兼容
醇氧8 小时前
主流 Agent 开发框架全解析(2026 最新)
大数据·数据库·人工智能·开源
hannuoi9 小时前
展厅设计公司哪个牌子好?品牌口碑测评榜单与避坑指南参考
大数据·人工智能