Azure数据工厂HDInsight按需群集'无法实例化SessionHiveMetaStoreClient'

时间:2016-03-20 13:56:15

标签: azure hive hdinsight azure-data-factory azure-resource-manager

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

该模板定义了一个数据工厂,具有Azure存储链接服务(用于读取和写入源和输出数据),输入数据集和输出数据集,HDInsight按需链接服务以及运行HDInsight HIVE活动用于运行HIVE脚本,该脚本将输入数据集处理为输出数据集。

一切都成功部署并开始管道活动。但是我从活动中收到以下错误:

  

线程“main”中的异常java.lang.RuntimeException:   java.lang.RuntimeException:无法实例化    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at at   org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:445)     在org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)at   org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:619)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在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 onethis one,表明这个问题是由HIVE Metastore数据库名称中的破折号或连字符引起的已知错误。

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

只需following the tutorial step by step即可轻松复制该问题。

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

  

“JamesTestTutorialARMDataFactory / HDInsightOnDemandLinkedService”   失败并显示消息'未启用HCatalog集成   订阅。

我的订阅不受限制,并且应该具有Azure的所有功能。所以现在我完全卡住了。目前看来,使用带有按需HDInsight的Hive基本上是不可能的吗?

如果有人能想到任何事情要尝试,我全都听见了!

由于

2 个答案:

答案 0 :(得分:0)

我最近研究了这个教程,并修改了教程。这是我的版本https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-adf/。我没有看到错误。 Hive表名称没有连字符。我认为我的关注更容易一些。我对模板本身做了一些小改动。

答案 1 :(得分:0)

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

  

...当您使用时,这是基于Linux的HDI群集的已知问题   他们与ADF。 HDI团队已经解决了这个问题,并将进行部署   未来几周的修复。在此期间,您必须使用Window   基于ADF的HDI集群。

     

现在请使用windows作为osType。我在GIT修复了这篇文章   它会在明天某个时候上线。

我链接到的教程确实已经改为使用windows而不是linux。我试过这个并且有效。