搜索
您的当前位置:首页正文

sparksql整合hive的环境搭建

来源:易榕旅网

     SQL主要目的是使得用户可以在上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如文本、、Json等)。 SQL的其中一个分支就是Spark on ,也就是使用Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑,可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。SparkSql整合hive就是获取hive表中的元数据信息,然后通过SparkSql来操作数据.

    spark整合hive之前应先安装好hadoop,hive,spark集群环境

整合步骤:

  • 需要将hive-site.xml文件拷贝到Sparkconf目录下,这样就可以通过这个配置文件找到Hive的元数据以及数据存放位置。
  • 如果Hive的元数据存放在Mysql中,我们还需要准备好Mysql相关驱动,比如:mysql-connector-java-5.1.35.jar

  • 将以上两个文件分发到其他集群机器上

 

 测试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

 

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top