SQL主要目的是使得用户可以在上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如文本、、Json等)。 SQL的其中一个分支就是Spark on ,也就是使用Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。SparkSql整合hive就是获取hive表中的元数据信息,然后通过SparkSql来操作数据.
spark整合hive之前应先安装好hadoop,hive,spark集群环境
整合步骤:
测试sparksql整合hive是否成功
先启动hadoop集群,在启动spark集群,确保启动成功之后执行命令:
/var/local/spark/bin/spark-sql --master spark://node1:7077 --executor-memory 1g --total-executor-cores 2 |
mysql数据库连接驱动。
执行成功后的界面:进入到spark-sql 客户端命令行界面
接下来就可以通过sql语句来操作数据库表:
查看当前有哪些数据库 ---show databases;
看到以上结果,说明sparksql整合hive成功!
日志太多,我们可以修改spark的日志输出级别(conf/log4j.properties)
前方高能:
在spark2.0版本后由于出现了sparkSession,在初始化sqlContext的时候,会设置默认的spark.sql.warehouse.dir=spark-warehouse,
所有在启动的时候需要加上这样一个参数:
--conf spark.sql.warehouse.dir=hdfs://node1:9000/user/hive/warehouse
如果使用的是spark2.0之前的版本,由于没有sparkSession,不会有spark.sql.warehouse.dir配置项,不会出现上述问题。
最后的执行脚本;
spark-sql \ --master spark://node1:7077 \ --executor-memory 1g \ --total-executor-cores 2 \ --conf spark.sql.warehouse.dir=hdfs://node1:9000/user/hive/warehouse |
因篇幅问题不能全部显示,请点此查看更多更全内容