我正在通过使用Visual Studio部署ARM模板来部署Azure数据工厂,基本上一步一步地遵循this Azure tutorial .
模板定义了一个数据工厂,用Azure存储关联服务(用于读取和写入源和输出数据),输入数据集和输出数据集,一个HDInsight点播连接服务,并且其运行一个HDInsight HIVE活性的管道运行HIVE脚本,将输入数据集处理为输出数据集 .
一切都成功部署,并开始管道活动 . 但是我从活动中收到以下错误:
异常在线程“主”了java.lang.RuntimeException:了java.lang.RuntimeException:无法在org.apache.hadoop.hive.ql.session.SessionState实例org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient . 启动(SessionState.java:445)在org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)在org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:619)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method中.invoke(Method.java:606)在org.apache.hadoop.util.RunJar.run(RunJar.java:221)在org.apache.hadoop.util.RunJar.main(RunJar.java:136)
我发现了各种帖子,如this one和this one,表明这个问题是由HIVE Metastore数据库名称中的破折号或连字符引起的已知错误 .
我的问题是使用ARM模板按需部署HDInsigh集群,我无法访问集群本身,因此我无法进行任何手动配置更改(按需的想法是它是瞬态的,只是创建服务于一系列需求,然后删除自己) .
这个问题可以通过following the tutorial step by step轻松复制 .
我发现唯一可能的希望是通过设置hcatalogLinkedServiceName as documented here,它旨在允许您使用自己的Azure SQL数据库作为hive Metastore . 但是,这也不起作用 - 如果我使用该属性,我得到:
'JamesTestTutorialARMDataFactory / HDInsightOnDemandLinkedService'失败,并显示消息'此订阅未启用HCatalog集成 .
我的订阅不受限制,并且应该具有Azure的所有功能 . 所以现在我完全卡住了 . 目前看来,使用Hive搭配点播HDInsight基本上是不可能的?
如果有人能想到任何事情要尝试,我全都耳朵!
谢谢
2 回答
我最近研究了这个教程,并修改了教程 . 这是我的版本,https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-adf/ . 我没有't see the error. The Hive table name doesn'有连字符 . 我认为我的关注更容易一些 . 我对模板本身做了一些小改动 .
我设法与GIT教程的作者联系 - 谁联系了Azure产品团队,这是他们的回答:
我链接到的教程确实已经改为使用windows而不是linux . 我试过这个并且它有效 .