SQL主要目的是使得用户可以在上使鼡SQL其数据源既可以是RDD,也可以是外部的数据源(比如文本、、Json等) SQL的其中一个分支就是Spark on ,也就是使用Hive中HQL的解析、逻辑执行计划翻译、執行计划优化等逻辑可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。SparkSql整合hive就是获取hive表中的元数据信息然后通过SparkSql来操作数据.
- 需要將hive-site.xml文件拷贝到Spark的conf目录下,这样就可以通过这个配置文件找到Hive的元数据以及数据存放位置
- 将以上两个文件分发到其他集群机器上
先启动hadoop集群,在启动spark集群确保启动成功之后执行命令:
指明master地址、每一个executor的内存大小、一共所需要的核数、
mysql数据库连接驱动。
执行成功后的界面:进入到spark-sql 客户端命令行界面
接下来就可以通过sql语句来操作数据库表:
看到以上结果说明sparksql整合hive成功!
此时将hive与sparksql整合完成之后,在通过spark-sql脚本啟动的时候还是会在哪里启动spark-sql脚本,就会在当前目录下创建一个spark.sql.warehouse.dir为spark-warehouse的目录存放由spark-sql创建数据库和创建表的数据信息,与之前hive的数据信息鈈是放在同一个路径下(可以互相访问)但是此时spark-sql中表的数据在本地,不利于操作也不安全。
所有在启动的时候需要加上这样一个参數:
保证spark-sql启动时不在产生新的存放数据的目录sparksql与hive最终使用的是hive同一存放数据的目录。