当前位置:   article > 正文

spark整合hive_spark和hive的整合

spark和hive的整合

spark sql在编译时是不包含hive表,开启hive依赖后,可以访问hive中的表以及UDF函数

通常我们用spark整合hive,说的是spark接管外部已经使用很长时间的hive,里面大大小小的表非常多,为了提高hive的查询效率,会使用spark来代替原来的mapreduce计算引擎,提升计算效率


1、在hive的hive-site.xml修改一行配置,增加了这一行配置之后,以后在使用hive之前都需要先启动元数据服务
<property>
<name>hive.metastore.uris</name>
<value>thrift://doker:9083</value>
</property>

2、将hive-site.xml  复制到spark conf目录下

 3、启动hive元数据服务
ohup hive --service metastore >> metastore.log 2>&1 &

 4、 将mysql 驱动包复制到saprk jars目录下
 整合好之后在spark-sql 里面就可以使用hive的表了

可以看到就是下面的效果

看看idea中操作hive

首先是依赖

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>5.1.49</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.spark</groupId>
  8. <artifactId>spark-hive_2.12</artifactId>
  9. <version>2.4.5</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.hive</groupId>
  13. <artifactId>hive-exec</artifactId>
  14. <version>1.2.1</version>
  15. </dependency>

 想在本地测试,结果idea上整半天没弄好,还是打包上传到集群运行的

  1. import org.apache.spark.sql.SparkSession
  2. object SparkSqlOnHive {
  3. def main(args: Array[String]): Unit = {
  4. val spark = SparkSession
  5. .builder()
  6. .appName("SparkSqlOnHive")
  7. .config("spark.sql.shuffle.partitions", 1)
  8. //开启hive的元数据支持
  9. .enableHiveSupport()
  10. .getOrCreate()
  11. val df = spark.table("student")
  12. df.show()
  13. spark.close()
  14. }
  15. }
spark-submit --master yarn-client --class com.zh.SparkSqlOnHive Spark-1.0.jar

运行成功 

 

一个spark sql的执行流程大概是下图中的内容通过一系列转换成RDD

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/987994
推荐阅读
相关标签
  

闽ICP备14008679号