从群集中的其他Azure HDinsight群集访问Hive表

时间:2018-11-27 14:47:27

标签: azure hive hdinsight

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

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

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

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

1 个答案:

答案 0 :(得分:0)

可以通过共享的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>")

另请参阅以下blog-post

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