apache-spark - Spark 仓库 VS Hive 仓库

标签 apache-spark hive apache-spark-sql hortonworks-data-platform

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仓库)各有什么优缺点?

最佳答案

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

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

Integrating Apache Hive with Apache Spark - Hive Warehouse Connector

一些额外细节的 Github 链接:

HiveWarehouseConnector - Github

关于apache-spark - Spark 仓库 VS Hive 仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044191/

相关文章:

python - 如何在Pyspark中生成带有数量的关联规则?

oracle - hadoop(sqoop)加载oracle的速度会比SQL loader快吗?

pyspark - 根据特定条件更新数据框

java - 使用 Apache Spark 和 Java 将 CSV 解析为 DataFrame/DataSet

apache-spark - 在数据框中将字符串转换为 double

apache-spark - 如何避免每次执行查询时进行查询准备(解析、计划和优化)?

hadoop - 如何将配置单元分区读入 Apache Crunch 管道?

mysql - 使用 MySQL 作为 Metastore 从 HIVE 查询元数据

pyspark - 实例化时出错 'org.apache.spark.sql.hive.HiveExternalCatalog'

hadoop - 如何在配置单元中获取复杂数据类型列的长度