【技术实践】Spark使用hive元数据

2019-02-15 人浏览 点击收藏: 分享至:

  1. Hive Warehouse Connector - HWC

  在hdp3.0,默认sparkhive各使用自己的metastore catalog,即在hive中创建的表spark中是看不到的。

  原因是新版hive支持ACID,默认也启用了ACID Manager,而SparkSQL还不支持ACID,所以它们两个各自使用不同的catalog

  如果要让sparksql直接使用hive元数据,有两种方案:

  1.hive禁用ACIDspark使用hivecatalog

  2.spark通过HWC访问hive元数据;

  建议使用HWCspark可以通过hwc使用hive元数据,并且也支持ranger,但只支持如下3类应用:

  · Spark shell

  · PySpark

  · The spark-submit script

  也就是还不支持spark-sql?

  Updates for HDP-3.0:

  · Hive uses the "hive" catalog, and Spark uses the "spark" catalog. No extra configuration steps are required – these catalogs are created automatically when you install or upgrade to HDP-3.0 (in Ambari the Spark metastore.catalog.default property is set to spark in "Advanced spark2-hive-site-override").

  · You can use the Hive Warehouse Connector to read and write Spark DataFrames and Streaming DataFrames to and from Apache Hive using low-latency, analytical processing (LLAP). Apache Ranger and the Hive Warehouse Connector now provide fine-grained row and column access control to Spark data stored in Hive.

  2. spark hwc配置

  还需要去除hive.metastore.uris属性:

  3.使用

  启动shell

spark-shell --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-1.0.0.3.0.0.0-1634.jar

  注:因为hive-warehouse-connector-assembly-1.0.0.3.0.0.0-1634.jar 没有s3 api,在访问s3文件时会报错,但最终会查出结果。

#创建hive会话

scala> val hive = com.hortonworks.spark.sql.hive.llap.HiveWarehouseBuilder.session(spark).build()   #val hive = com.hortonworks.hwc.HiveWarehouseSession.session(spark).build()

#如果使用用户名密码

val hive = com.hortonworks.hwc.HiveWarehouseSession.session(spark).userPassword("hive","passw").build()

#查看数据库

scala> hive.showDatabases().show

+------------------+

|     database_name|

+------------------+

|           default|

|information_schema|

|               iot|

|               sys|

+------------------+

#查看数据表

scala>  hive.showTables().show

+--------+

|tab_name|

+--------+

| invites|

|   pokes|

+--------+

#查询数据表内容

hive.executeQuery("SELECT * FROM pokes limit 3").show()

#切换数据库

hive.setDatabase("iot")

  4.SparkSQL 使用HWC

  需要配置Custom spark-thrift-sparkconf

- spark.sql.hive.hiveserver2.url=jdbc:hive2://{hiveserver-interactive-hostname}:10500

- spark.jars=/usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-1.0.0.3.0.0.0-1634.jar

- spark.hadoop.hive.zookeeper.quorum={some-or-all-zookeeper-hostnames}:2181

- spark.hadoop.hive.llap.daemon.service.hosts=@llap0

  属性spark_thrift_cmd_opts设置值:--jars /usr/hdp/2.6.3.0-235/spark_llap/spark-llap-assembly-1.0.0.2.6.3.0-235.jar --conf spark.sql.hive.llap=true

  连接spark jdbc

bin/beeline -u jdbc:hive2://slave5.cluster.local:10016 -n hive

  

0: jdbc:hive2://slave5.cluster.local:10016> show databases;

+---------------+--+

| databaseName  |

+---------------+--+

| default       |

| spdb          |

+---------------+--+

  结果不对,还是spark catalog

  另附: shell下访问spark catalog的结果:

scala>  spark.catalog.listDatabases.show

Hive Session ID = 1ea54a87-9df0-4ca0-b7a4-f741bb091e6f

+-------+----------------+--------------------+

|   name|     description|         locationUri|

+-------+----------------+--------------------+

|default|default database|hdfs://slave5.clu...|

|   spdb|                |hdfs://slave5.clu...|

+-------+----------------+--------------------+


作者:贾德星

职务:云服务集团云计算产品中心高级架构师

专业领域:大数据

专家简介:系统软件架构师,具备二十余年一线软件开发的工作经历,经验丰富。主持研发浪潮大数据平台产品云海InsightHD,专注于大数据Hadoop/Spark/流计算/机器学习/深度学习等相关技术组件的研究与应用及组件研发。参与起草信息技术国家标准二十余项,已正式发布12项国家标准。研发并申请9项国家专利获得授权。

 

 

查看全部
相关文章推荐相关文章推荐
技术实践Spark使用hive数据 技术实践】openssl几个加密算法使用介绍 技术实践Spark+SQL作业查询API 数据库——云计算技术高性能数据库服务由我开启 技术实践】apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息 浪潮大数据解决方案介绍 浪潮云数据库RDS是什么 如何分析浪潮云计算的技术呢? 技术实践】Dockerfile入门 技术实践】ssl双向认证
热门解决方案热门解决方案
钢铁行业资源配置优化解决方案_资源配置优化系统 智慧能源管理解决方案_智慧能源管理系统_能源管理平台搭建 第三方物流协同平台解决方案_第三方物流平台搭建 云灾备解决方案_云计算灾备方案_云灾备技术 云托管解决方案_服务器云托管_企业云服务托管 制药行业生产管理解决方案_工厂生产管理_智能化生产管理解决方案 金融行业托管云解决方案_银行业托管云 汽摩配解决方案_汽配行业解决方案_汽车零部件行业管理系统 企业建站解决方案_企业建站系统_一键建站 钢铁行业智能远程运维系统解决方案_智能运维管理系统
热门产品推荐热门产品推荐
热门标签热门标签