Azure 数据工厂 HDInsight 按需集群 'Unable to instantiate SessionHiveMetaStoreClient'

Azure data factory HDInsight on-demand cluster 'Unable to instantiate SessionHiveMetaStoreClient'

我正在通过使用 Visual Studio 部署 ARM 模板来部署 Azure 数据工厂,基本上完全按照 this Azure tutorial 一步步进行。

该模板定义了一个数据工厂,其中包含一个 Azure 存储链接服务(用于读取和写入源数据和输出数据)、一个输入数据集和一个输出数据集、一个 HDInsight 按需链接服务以及一个管道运行从 HDInsight HIVE activity 到 运行 将输入数据集处理为输出数据集的 HIVE 脚本。

一切部署成功,管道 activity 启动。但是我从 activity:

得到以下错误

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:445) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:619) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

我发现了各种帖子,例如 this one and this one,表明该问题是由 HIVE 元存储数据库名称中的破折号或连字符引起的已知错误。

我的问题是,使用 ARM 模板按需部署 HDInsigh 集群时,我无权访问集群本身,因此我无法进行任何手动配置更改(按需的想法是它是短暂的,只为满足一组需求而创建,然后自行删除)。

只需 following the tutorial step by step 即可轻松重现该问题。

我发现的唯一一线希望是设置 hcatalogLinkedServiceName as documented here,它旨在允许您使用自己的 Azure SQL 数据库作为配置单元元存储。但是,这也不起作用 - 如果我使用 属性,我得到:

‘JamesTestTutorialARMDataFactory/HDInsightOnDemandLinkedService’ failed with message ‘HCatalog integration is not enabled for this subscription.

我的订阅不受限制,应该可以使用 Azure 的所有功能。所以现在我完全被困住了。看来目前Hive配合on-demand HDInsight基本不可能了?

如果有人能想到什么可以尝试,我洗耳恭听!

谢谢

最近在学习教程,对教程进行了修改。这是我的版本,https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-adf/。我没有看到错误。 Hive table 名称没有连字符。我认为我的更容易理解。我对模板本身做了一些小改动。

我设法联系了 GIT 教程的作者 - 他联系了 Azure 产品团队,这是他们的回复:

...this is a known issue with Linux based HDI clusters when you use them with ADF. The HDI team has fixed the issue and will be deploying the fix in the coming weeks. In the meantime, you have to use Window based HDI clusters with ADF.

Please use windows as osType for now. I have fixed the article in GIT and it will go live some time tomorrow.

我 link 的教程确实已更改为使用 windows 而不是 linux。我已经试过了,很有效。