飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • AngularJS教程
  • UEditor使用文档
  • ThinkPHP5.0教程

Hive on Spark和Spark sql on Hive,你能分的清楚么

时间:2022-01-05  作者:huaweiyun  
摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序。

本文分享自华为云社区《Hive on Spark和Spark sql on Hive有啥区别?》,作者:dayu_dls 。

结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序。Hive和SparkSQL都不负责计算。Hive的默认执行引擎是mr,还可以运行在Spark和Tez。Spark可以连接多种数据源,然后使用SparkSQL来执行分布式计算。

Hive On Spark 配置

(1)首先安装包要选择对,否则就没有开始了。

Hive版本:apache-hive-2.1.1-域名

spark版本:spark-1.6.3-bin-hadoop2.4-without-hive(不需要把Hive编译进去)

(2)假设你已经安装好Hive(元数据为Derby)和spark,那么默认Hive走mr,需要修改以下配置让Hive走spark

<property>
    <name>域名ne</name>
    <value>spark</value>
</property>

(3)配置环境变量及运行时参数

在hive-域名中配置SPARK_HOME;

在hive-域名或者或者spark-域名或者spark-域名配置spark运行时参数,也可以在Hive运行环境中设置临时参数:

set 域名er=<Spark Master URL>
set 域名led=true;
set 域名=<Spark event log folder (must exist)>
set 域名ry=512m;            
set 域名alizer=域名域名Serializer;

将编译好的Spark安装包中lib目录下的spark-assembly-*.jar包添加至HIVE_HOME/lib中

(4)启动Hive

/opt/hive/bin/hive --service metastore

(5)启动Hive命令行窗口

beeline -u jdbc:hive2://localhost:10000  或者  /opt/hive/bin/hive

(6)开启你的Hive on spark之旅

0: jdbc:hive2://localhost:10000> create table test (f1 string,f2 string) stored as orc;

No rows affected (域名 seconds)

0: jdbc:hive2://localhost:10000> insert into test values(1,2);

Spark sql on Hive

(1)获取包

Hive版本:apache-hive-2.1.1-域名

spark版本:spark-1.6.3-bin-hadoop2.4(需要把Hive编译进去)

(2)在$SPARK_HOME/conf目录创建hive-域名文件,内容如下:

<configuration>  
<property>  
    <name>域名</name>  
    <value>thrift://master1:9083</value>  
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>  
  </property>  
</configuration>

(3)如果你使用的元数据库是mysql,那么请把mysql驱动放到$SPARK_HOME/lib下,否则跳过。

(4)启动Hive元数据服务,待spark运行时访问。

(5)执行命令

./bin/spark-shell --master spark://master:7077
scala> val hc = new 域名域名.HiveContext(sc);
scala> 域名("show tables").域名ach(println)
[sougou,false]
[t1,false]

Sparkthriftserver启用

spark提供了spark-sql命令可以直接操作hive或impala,可以启用sparkthriftserver服务,然后利用beeline远程连接spark,利用spark sql。sparksql的诞生其实就是为了代替hsql。Sparksql的元数据也是使用hive的metastore进行管理,所以需要配置域名参数。

这里说下sparkthriftserver和hivethriftserver的区别,二者的端口一定要区分:

hivethriftserver:hive服务端的服务,远程通过jdbc或者beeline连接,使用hsql操作hive。

sparkthriftserver:spark的服务,远程通过jdbc或者beeline连接spark,使用spark sql操作hive。

(1)在$SPARK_HOME/conf目录创建hive-域名文件,内容如下:

<configuration>  
<property>  
    <name>域名</name>  
    <value>thrift://master1:9083</value>  
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>  
  </property>  
<!--Thrift JDBC/ODBC server-->
   <property>
       <name>域名域名域名ads</name>
       <value>5</value>
   </property>
   <property>
       <name>域名域名域名ads</name>
       <value>500</value>
   </property>
   <property>
       <name>域名域名</name>
       <value>10001</value>
   </property>
   <property>
       <name>域名域名</name>
       <value>master</value>
   </property>
</configuration>  

(2)启动sparkthriftserver

./start-域名 --hiveconf 域名域名=10000 --master yarn --driver-class-path /data/spark-2.2.0-bin-hadoop2.7/jars/mysql-connector-java-域名-域名 --executor-memory 5g --total-executor-cores 5
启动sparkthriftserver后,后台默认会执行spark-sql命令,实际上是用spark-submit向yarn提交一个任务。这样就会在yarn的8088页面任务栏中起一个常驻任务,用来执行spark sql。

(3)连接spark

./beeline -u jdbc:hive2://域名.6:10001 -n root
(4)这里的sql可以在8088页面看到执行过程。

 

点击关注,第一时间了解华为云新鲜技术~

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。