Hadoop 3 中的 Spark 和 Hive:metastore.catalog.default 和 spark.sql.catalogImplementation 之间的区别
Spark and Hive in Hadoop 3: Difference between metastore.catalog.default and spark.sql.catalogImplementation
我正在使用 Hadoop 3 开发 Hadoop 集群 (HDP)。还安装了 Spark 和 Hive。
由于 Spark 和 Hive 目录是分开的,所以有时会有点困惑,不知道如何以及在何处保存 Spark 应用程序中的数据。
我知道,属性 spark.sql.catalogImplementation
可以设置为 in-memory
(使用基于 Spark 会话的目录)或 hive
(使用 Hive 目录)用于持久元数据存储 -> 但元数据仍与 Hive DB 和表分开)。
我想知道 属性 metastore.catalog.default
的作用。当我将其设置为 hive
时,我可以看到我的 Hive 表,但是由于这些表存储在 HDFS 的 /warehouse/tablespace/managed/hive
目录中,所以我的用户无权访问该目录(因为 hive 当然是所有者).
那么,如果我无法从 Spark 访问表,为什么还要设置 metastore.catalog.default = hive
?跟Hortonwork的Hive Warehouse Connector有关系吗?
感谢您的帮助。
目录实施
有两个目录实现:
in-memory
在内存中创建 tables 仅在 Spark 会话中可用,
hive
使用外部 Hive Metastore 创建持久性 tables。
更多详情here。
Metastore 目录
在同一个Hive Metastore 中可以同时存在多个目录。
例如,从 3.1.0 到 3.1.4 的 HDP 版本使用不同的目录来保存 Spark tables 和 Hive tables.
您可能希望使用 metastore.catalog.default=hive
使用 Spark API 读取 Hive 外部 tables。用户 运行 Spark 应用程序必须可以访问 HDFS 中的 table 位置。
HDP 3.1.4 文档
您可以在以下链接中根据 Hive table 类型、read/write 功能和安全要求获取有关访问模式的信息:
我正在使用 Hadoop 3 开发 Hadoop 集群 (HDP)。还安装了 Spark 和 Hive。
由于 Spark 和 Hive 目录是分开的,所以有时会有点困惑,不知道如何以及在何处保存 Spark 应用程序中的数据。
我知道,属性 spark.sql.catalogImplementation
可以设置为 in-memory
(使用基于 Spark 会话的目录)或 hive
(使用 Hive 目录)用于持久元数据存储 -> 但元数据仍与 Hive DB 和表分开)。
我想知道 属性 metastore.catalog.default
的作用。当我将其设置为 hive
时,我可以看到我的 Hive 表,但是由于这些表存储在 HDFS 的 /warehouse/tablespace/managed/hive
目录中,所以我的用户无权访问该目录(因为 hive 当然是所有者).
那么,如果我无法从 Spark 访问表,为什么还要设置 metastore.catalog.default = hive
?跟Hortonwork的Hive Warehouse Connector有关系吗?
感谢您的帮助。
目录实施
有两个目录实现:
in-memory
在内存中创建 tables 仅在 Spark 会话中可用,hive
使用外部 Hive Metastore 创建持久性 tables。
更多详情here。
Metastore 目录
在同一个Hive Metastore 中可以同时存在多个目录。
例如,从 3.1.0 到 3.1.4 的 HDP 版本使用不同的目录来保存 Spark tables 和 Hive tables.
您可能希望使用 metastore.catalog.default=hive
使用 Spark API 读取 Hive 外部 tables。用户 运行 Spark 应用程序必须可以访问 HDFS 中的 table 位置。
HDP 3.1.4 文档
您可以在以下链接中根据 Hive table 类型、read/write 功能和安全要求获取有关访问模式的信息: