SparkSQL编程方式纯SQL读写Hive数据源
Posted 若兰幽竹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SparkSQL编程方式纯SQL读写Hive数据源相关的知识,希望对你有一定的参考价值。
一、准备工作
- 实验环境:IDEA + CentOS7 + Spark2.4.8+Hive2.3.3+mysql2.7+Hadoop2.7.3
- 数据准备:Hive中的emp员工信息表
- 前置工作:
- Hadoop开启HDFS服务(
必选
) - 开启hiveserver2服务(可选)
- 开启Spark服务(可选)
- 将hive-site.xml复制到idea工程下的resources目录下(
必选
)
- Hadoop开启HDFS服务(
二、任务分析
借助sparksql读写hive表,利用纯的SQL来完成对emp表中按照部门求其工资,并按照工资总额进行降序排序。
三、编码实现
- 创建maven工程
- 添加maven依赖,即在pom.xml中添加hive的依赖,spark的依赖请参考之前的实验,如下:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.12</artifactId> <version>2.4.8</version> </dependency>
- 将虚拟机中的hive-site.xml导出来,并放置在idea工程resources目录下,如图所示:
- 创建
HiveDemo.scala
的object对象,编写如下代码即可:
import org.apache.spark.sql.SparkSession
object HiveDemo {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession
.builder()
.master("local[2]")
.appName("Test")
// 如不配置,则使用本地的warehouse
.config("spark.sql.warehouse.dir", "hdfs://niit01:9000/user/hive/warehouse")
.enableHiveSupport()
.getOrCreate()
// 引入隐士函数
import spark.implicits._
import spark.sql
sql("select deptNo,sum(sal) as total from emp group by deptNo order by total desc").show
// 关系资源
spark.stop()
}
}
注意:代码中的.config部分是hdfs上的路径,故需要开启hdfs服务。如删除.config,则会在工程目录下生成metastore_db目录,其作为hive的元数据库的目录
五、运行测试
以上是关于SparkSQL编程方式纯SQL读写Hive数据源的主要内容,如果未能解决你的问题,请参考以下文章