泰涨知识 | 【编程操作详解】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")}}
相关推荐
陕西企来客13 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
hangyuekejiGEO15 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术15 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
风途科技~17 小时前
雷达与压力一体式设计,可同时选用或单独选用—一体式管网液位计灵活配置
大数据·人工智能
大大大大晴天18 小时前
浅析StarRocks 表设计:表类型、分布策略与索引
大数据
APItesterCris19 小时前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
全栈派森21 小时前
告别大表膨胀!MySQL 冷热分离落地全过程(含 CDC 与单行锁抢占实战)
大数据·mysql
LinuxGeek10241 天前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03适配原生rpm的MySQL 8.4.11版本正式发布
大数据·mysql·kylin
2601_962502901 天前
点胶点钻机运动控制与视觉定位系统解析:精度、算法与工程实现
大数据·架构
阿部多瑞 ABU1 天前
正反馈的死亡螺旋:数字资本时代泛二次元文化-情感-金融复合体的系统性分析
大数据·人工智能·金融