7

我正在使用 Hadoop 3 开发 Hadoop 集群 (HDP)。还安装了 Spark 和 Hive。

由于 Spark 和 Hive 目录是分开的,因此有时很难知道在 Spark 应用程序中如何以及在何处保存数据。

我知道,该属性spark.sql.catalogImplementation可以设置为in-memory(使用基于 Spark 会话的目录)或hive(使用 Hive 目录进行持久元数据存储 -> 但元数据仍与 Hive DB 和表分开)。

我想知道物业是做什么的metastore.catalog.default。当我将其设置为时,hive我可以看到我的 Hive 表,但由于这些表存储在/warehouse/tablespace/managed/hiveHDFS 的目录中,我的用户无权访问该目录(因为 hive 当然是所有者)。

那么,metastore.catalog.default = hive如果我无法从 Spark 访问表,我为什么要设置 ? 它与 Hortonwork 的 Hive Warehouse 连接器有关吗?

谢谢您的帮助。

4

1 回答 1

3

目录实现

有两个目录实现:

  • in-memory创建仅在 Spark 会话中可用的内存表,
  • hive使用外部 Hive Metastore 创建持久表。

更多细节在这里

元存储目录

在同一个 Hive Metastore 中可以共存多个目录。例如,从 3.1.0 到 3.1.4 的 HDP 版本使用不同的目录来保存 Spark 表和 Hive 表。
您可能希望metastore.catalog.default=hive使用 Spark API 来读取 Hive 外部表。运行 Spark 应用程序的用户必须可以访问 HDFS 中的表位置。

HDP 3.1.4 文档

您可以通过以下链接获取根据 Hive 表类型、读/写特性和安全要求的访问模式信息:

于 2020-12-08T16:29:15.123 回答