Spark-SQL连接Hive
Apache Hive是Hadoop上的SQL引擎,Spark SQL编译时可选择是否包含Hive支持。包含Hive支持的版本支持Hive表访问、UDF及HQL。生产环境推荐编译时引入Hive支持。
内嵌Hive
直接使用无需配置,但生产环境极少采用。
外部Hive
需完成以下配置:
将hive-site.xml拷贝至conf目录
修改数据库连接地址(如jdbc:mysql://node01:3306/myhive )
拷贝MySQL驱动到jars目录
拷贝core-site.xml和hdfs-site.xml到conf目录
重启spark-shell
Spark Beeline
基于HiveServer2实现的Thrift服务,兼容HiveServer2协议:
配置hive-site.xml和MySQL驱动
启动Thrift Server
使用beeline连接:beeline -u jdbc:hive2://node01:10000 -n root
Spark-SQL CLI
类似Hive命令行工具:
拷贝MySQL驱动到jars目录
放置hive-site.xml到conf目录
执行bin/spark-sql启动
代码操作Hive
需添加依赖:
关键代码步骤:
设置HADOOP_USER_NAME解决权限问题
配置spark.sql.warehouse.dir指定仓库路径
通过SparkSession执行建库、查库等DDL操作
数据加载与保存
提供通用API支持多种数据格式,默认使用Parquet格式。
通用操作
加载数据:spark.read.format("格式").load("路径")
保存数据:df.write.format("格式").mode("模式").save("路径")
支持格式:csv/json/orc/parquet/textFile/jdbc
Parquet
默认数据源,支持嵌套数据存储
直接使用load/save方法操作
可配置spark.sql.sources.default修改默认格式
JSON
自动推断结构,要求每行为完整JSON
加载:spark.read.json("path")
创建临时表后执行SQL查询
MySQL
依赖mysql-connector-java
两种连接方式:
通过options配置参数
使用Properties对象设置连接属性
支持Append/Overwrite等保存模式
CSV
配置选项:sep(分隔符)、header(表头)、inferSchema(自动推断类型)