Spark 仓库 VS Hive 仓库

Posted

技术标签:

【中文标题】Spark 仓库 VS Hive 仓库【英文标题】:Spark Warehouse VS Hive Warehouse 【发布时间】:2018-10-29 11:08:05 【问题描述】:

Hortonworks 数据平台 HDP 3.0 有 spark 2.3 和 Hive 3.1,默认情况下 spark 2.3 应用程序(pyspark/spark-sql 等)使用 spark 数据仓库,而 Spark 2.3 使用 Hive Warehouse Connector 与 Apache Hive 集成的方式不同。

integrating-apache-hive-with-apache-spark-hive-warehouse-connector

我可以在 Hive Metastore(mysql) 中看到 2 个默认数据库。一个指向 Hive 位置,另一个指向 spark 位置。

mysql> SELECT NAME, DB_LOCATION_URI FROM hive.DBS;
+--------+----------------------------------------------------------+
| NAME   | DB_LOCATION_URI                                          |
+--------+----------------------------------------------------------+
| default| hdfs://<hostname>:8020/warehouse/tablespace/managed/hive |
| default| hdfs://<hostname>:8020/apps/spark/warehouse              |
+--------+----------------------------------------------------------+

mysql>

谁能解释一下这两种仓库有什么区别,我找不到任何关于这个的文章,我们可以使用 spark 仓库而不是 Hive(我知道 spark 仓库不能通过 Hive 访问,或者有什么办法吗?)。这2个(spark仓库和hive仓库)的优缺点是什么?

【问题讨论】:

来自答案:docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.0.1/… 【参考方案1】:

从 HDP 3.0 开始,Apache Hive 和 Apache Spark 的目录是分开的,它们使用自己的目录;即它们是互斥的——Apache Hive 目录只能被 Apache Hive 或这个库访问,而 Apache Spark 目录只能被 Apache Spark 中现有的 API 访问。换句话说,一些特性,如 ACID 表或带有 Apache Hive 表的 Apache Ranger 只能通过 Apache Spark 中的这个库获得。 Hive 中的这些表不应该在 Apache Spark API 本身中直接访问。

默认情况下,spark 使用 spark 目录,下面的文章解释了如何通过 Spark 访问 Apache Hive 表。

Integrating Apache Hive with Apache Spark - Hive Warehouse Connector

Github 链接到一些额外的细节:

HiveWarehouseConnector - Github

【讨论】:

【参考方案2】:

在 HDP 3.1.4 中,您可以在 Spark Warehouse 和 Hive Warehouse 之间切换。 你只需要在 Ambari 中配置它: 服务 -> Spark2 -> 配置 -> 高级 spark2-hive-site-override

默认值:

metastore.catalog.default = spark

改成:

metastore.catalog.default = hive

在 Ambari 中重新启动 Spark2,您可以通过 Pyspark 访问 Hive:

spark.sql('show databases').show()

【讨论】:

以上是关于Spark 仓库 VS Hive 仓库的主要内容,如果未能解决你的问题,请参考以下文章

Spark环境搭建-----------数据仓库Hive环境搭建

Spark SQL metaData配置到Mysql

Spark SQL 使用beeline访问hive仓库

如何在不使用 HDP 3.1 中的仓库连接器的情况下将表从 spark 中写入 hive

数据湖 VS 传统数据仓库→ 基于 Spark 的数据湖项目实践

信息科技 | 数据仓库