您当前的位置: 首页 >  ar

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SparkSql On Hive

cuiyaonan2000 发布时间:2021-05-08 11:47:59 ,浏览量:0

序言

sql 在 hive的使用具体还分为了2种解决方案:hive on spark 和 sparksql,这里主要使用的是sparksql。因为两者都是使用spark替换mapreduce作为计算引擎.实际区别是Hive On Spark 是Hive封装了Spark. SparkSql是Spark封装了Hive.搜索引擎分别是自己的设计逻辑cuiyaonan2000@163.com

简介 Hive On Spark

  Hive on Spark是由Cloudera发起,将Hive的查询作为Spark的任务提交到Spark集群上进行计算(共同点都是放到spark上进行计算cuiyaonan2000@163.com)。通过该项目,可以提高Hive查询的性能。Hive将不再受限于一个引擎,可以采用Map-Reduce、Tez、Spark等引擎

Hive on Spark总体的设计思路是,尽可能重用Hive逻辑层面的功能,从生成物理计划开始,提供一整套针对Spark的实现,比如Spark Compiler、Spark Task等,这样Hive的查询就可以作为Spark的任务来执行了。其设计的动机和主要原则有:

  1. Hive on Spark尽可能少改动Hive的代码,从而不影响Hive目前对MapReduce和Tez的支持,以及在功能和性能方面的影响;
  2. 对于选择Spark的用户,应使其能够自动的获取Hive现有的和未来新增的功能,如数据类型、UDF、逻辑优化等;
  3.  尽可能降低维护成本,保持对Spark依赖的松耦合,不做专门针对spark引擎,而对其它引擎有影响的改动

Spark SQL

Spark SQL的前身是Shark,是给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具。2014年Spark团队停止对Shark的开发,将所有资源放Spark SQL项目上。Spark SQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive。

Spark SQL是spark套件中一个模板,它将数据的计算任务通过SQL的形式转换成了RDD的计算,类似于Hive通过SQL的形式将数据的计算任务转换成了MapReduce。Spark SQL的特点有:

  1.     和Spark Core的无缝集成,可以在写整个RDD应用的时候,配置Spark SQL来完成逻辑实现;
  2.     统一的数据访问方式,Spark SQL提供标准化的SQL查询;------这种有点像phoenix
  3.     Hive的继承,Spark SQL通过内嵌的hive或者连接外部已经部署好的hive案例,实现了对hive语法的继承和操作;------------关于spark sql 使用内嵌的sql或者链接外部hive都支持这个比较有用cuiyaonan2000@163.com
  4.     标准化的连接方式,Spark SQL可以通过启动thrift Server来支持JDBC、ODBC的访问,将自己作为一个BI Server使用。------这种有点像phoenix

Hive与SparkSql整合 spark与hive整合
  • 首先将hive的配置文件放置到spark的conf文件夹下:hive-site.xml  如此spark就知道hive放置在hdfs上的warehouse地址
  • 因为hive使用mysql存储metastore所以,spark也需要mysql的驱动。故此把mysql的驱动mysql-connector-java-8.0.15.jar放置到spark的jars文件夹下。
  • 完成如上两步后启动spark集群
验证是否成功

如上spark启动的时候会自动加载hive-site.xml获取hive连接的mysql数据库信息。所以spark内部启动其实做了很多事情,我们这里不需要操心。

我们可以直接使用 spark-sql命令来测试下能否查询出之前在hive中创建的数据库和对应表的相关记录来验证是否整合成功。(另外我们也可以使用java程序来做这件事cuiyaonan2000@163.com)

#这里的master指代的就是spark集群的master地址
#--executor-memory 1g   指定executor的内存大小
#--total-executor-cores 2 指定总共需要的内核

[root@cuiyaonan2000@163.com bin] ./spark-sql --master spark://mzdapip:7077 --executor-memory 1g  --driver-class-path /soft/spark/spark-3.1.1-bin-hadoop3.2/jars/mysql-connector-java-8.0.15.jar
使用标准的sql来查看hive中创建的数据库

使用select查看我们之前在hive中创建的表和里面的记录

从spark集群的管理界面可以看到如下内容

如下的applications就是刚才我们的spark-sql的连接。

Spark Thrift

spark 也提供了第三方的连接,让我们可以远程提交sql命令.这个跟Hive Server2一样.都是基于jdbc协议的连接.

hive-site.xml

首先将hive的hive-site.xml放到spark的conf目录下

Mysql驱动

因为sparksql使用了hive的metadata所以需要mysql的数据库驱动.换句话说(是spark内嵌的hive需要使用驱动来获取元数据cuiyaonan2000@163.com)

启动命令
./start-thriftserver.sh --jars /home/hadoop/mysql-connector-java-5.1.35-bin.jar --master yarn

WebUi

启动访问地址: http://ip:4040  进行访问

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0351s