0. 说明
Spark SQL 的配置基于 &&
1. 简介
Spark SQL 是构建在 Spark Core 模块之上的四大模块之一,提供 DataFrame 等丰富 API,可以采用传统的 SQL 语句进行数学计算。运行期间,会通过 Spark 查询优化器翻译产物理执行计划,并行计算后输出结果。底层计算原理仍然采用 RDD 计算实现。
2. Spark 与 Hive 集成
2.1 在 Spark 配置目录下创建指向 [hive-site.xml ] 文件的同名符号链接
cd /soft/spark/confln -s /soft/hive/conf/hive-site.xml hive-site.xml
2.2 复制 Hive 元数据库使用的驱动程序到 Spark 的 jars 目录下,比如 MySQL
cd /soft/hive/lib/cp mysql-connector-java-5.1.44.jar /soft/spark/jars
2.3 关闭 Hive 配置文件 [hive-site.xml] 文件中版本检查,否则会报版本不一致异常
[centos@s101 ~]$ cd /soft/hive/conf/[centos@s101 /soft/hive/conf]$ sudo vi hive-site.xml
hive.metastore.schema.verification false
3. 在 Spark shell 中访问 Hive
3.0 开启 ZooKeeper & HDFS & Spark 集群
略
3.1 启动 spark-shell,观察输出内容,打印 Hive 配置信息
spark-shell --master spark://s101:7077
若成功则如下图所示
3.2 在 Scala 命令行执行如下命令
# 显示所有数据库spark.sql("show databases").show() # 使用指定数据库spark.sql("use mydb").show() # 显示当前数据库中的数据表spark.sql("show tables").show() # 查询 customers 表数据spark.sql("select * from customers").show(1000,false)# 构造 RDDval rdd1= sc.parallelize(Array((1,"tom1",12) ,(2,"tom2",13) ,(2,"tom3",14) ))# 转换 RDD 成DataFrameval df = rdd1.toDF("id" , "name" , "age")# 通过 DataFrame select API 实现 SQL 中的 select 语句df.select("id").show()# 注册临时表df.registerTempTable("_cust")# 通过临时表进行数据操纵spark.sql("select * from _cust").show(1000 ,false) ;