0

我正在通过使用 Visual Studio 部署 ARM 模板来部署 Azure 数据工厂,基本上完全按照这个 Azure 教程一步一步来。

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

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

线程“主”java.lang.RuntimeException 中的异常:java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 在 org.apache.hadoop.hive.ql.session.SessionState.start(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(Native Method) 在 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)

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

我的问题是使用 ARM 模板按需部署 HDInsigh 集群,我无法访问集群本身,所以我无法进行任何手动配置更改(按需的想法是它是暂时的,只是创建服务于一组需求,然后删除自身)。

只需按照教程一步一步地操作,即可轻松重现该问题。

我发现的唯一可能的一线希望是通过设置hcatalogLinkedServiceName 如此处记录,它旨在允许您使用自己的 Azure SQL 数据库作为配置单元元存储。但是,这也不起作用 - 如果我使用该属性,我会得到:

“JamesTestTutorialARMDataFactory/HDInsightOnDemandLinkedService”失败并显示消息“<strong>HCatalog 集成未为此订阅启用。”</p>

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

如果有人能想到任何可以尝试的方法,我会全力以赴!

谢谢

4

2 回答 2

0

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

于 2016-03-22T00:18:45.610 回答
0

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

...当您将基于 Linux 的 HDI 集群与 ADF 一起使用时,这是一个已知问题。HDI 团队已修复此问题,并将在未来几周内部署修复程序。同时,您必须将基于窗口的 HDI 集群与 ADF 结合使用。

请暂时使用 windows 作为 osType。我已经在 GIT 中修复了这篇文章,明天它会上线。

我链接到的教程确实已更改为使用 windows 而不是 linux。我已经尝试过了,它有效。

于 2016-03-22T17:38:21.147 回答