首页 > 解决方案 > 从我们的集群中访问来自其他 Azure HDinsight 集群的 Hive 表

问题描述

我们的设置中有一个 HDInsight 集群,我们将数据存储在 Hive 表中(数据位于 ADLS 中的外部表和外部元存储中的元数据,并使用 Azure 集群中的 Hive 服务进行访问)。与其他 Azure 集群(不一定在同一个订阅中)共享此数据的最佳方式是什么?

Azure 有这种服务主体的概念,因此我们需要设置 acls 以允许其他集群的服务主体访问与我们共享的 hive 表对应的 ADLS 文件夹。另外,我们集群的hiveserver2 url如何被其他Azure实例用作jdbc连接,以便他们可以查询数据?我们应该为他们提供什么集群登录,以便能够使用我们的 HiveServer2 来查询 Hive 表中的数据?

我知道正确的方法是使用 Azure ESP 服务,但这显然是一个代价高昂的选择。

仅向他们提供对 ADLS 文件夹的访问权限似乎也不正确,因为元数据随后不用于访问数据......

标签: azurehiveazure-hdinsight

解决方案


所描述的场景可以通过共享元存储来实现。由于您已经有一个外部元存储,因此您也可以将它用于其他集群。前提是访问此 Metastore 的集群的 Hive-Metastore 版本相同。

您还可以更改集群创建模板中的核心站点设置,以具有相同的文件系统结构(如果您不使用完全限定的存储帐户名称):

"core-site": {
    "fs.defaultFS": "adl://home",
    "dfs.adls.home.hostname": "<your-datalake-store>.azuredatalakestore.net",
    "dfs.adls.home.mountpoint": "/<your-adl-home-mountpoint-dir>",...
     },

在 Spark 中,这将通过以下方式完成:

spark.conf.set("dfs.adls.home.hostname", "<your-datalake-store>.azuredatalakestore.net")
spark.conf.set("dfs.adls.home.mountpoint", "/<your-adl-home-mountpoint-dir>")

另请参阅以下博客文章

还要检查以下答案如何从 pyspark(也从“外部”)访问 HDInsight。


推荐阅读