技术分享

金山云 > 推荐阅读 > 【技术实践】Spark使用hive元数据

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

发布时间: 2020-01-16 12:01:03

  1.Hive Warehouse Connector - HWC


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


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


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


  1.hive禁用ACID,spark使用hive的catalog


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


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


  ·Spark shell


  ·PySpark


  ·The spark-submit script


  也就是还不支持spark-sql?


  Updatesfor HDP-3.0:


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


  ·You can use the Hive Warehouse Connector to read and write Spark DataFrames andStreaming DataFrames to and from Apache Hive using low-latency, analyticalprocessing (LLAP). Apache Ranger and the Hive Warehouse Connector now providefine-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


  连接sparkjdbc:

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元数据的相关内容,如果您还想了解更多原因,数据,属性,建议,方案,金山云的相关问题您可以点击页面中的链接进行具体了解。金山云提供云服务器,云主机,云存储,私有云,数据库,物理主机,RDS,KS3,SLB,KEC的全套产品服务,部分产品可以免费体验,而且会有定期的优惠、代金券等相关的活动。成立7年来,金山云始终坚持以客户为中心的服务理念,提供安全、可靠、稳定、高品质的云计算服务。以上是对【技术实践】Spark使用hive元数据相关介绍,如果觉得对您有帮助可以收藏。欢迎随时查看。
以上就是金山云为您带来的推荐阅读的全部内容,如果还想了解更多内容可访问金山云官网www.ksyun.com了解其它资讯。
*免责声明:部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。