我正在关注本教程http://azure.microsoft.com/en-us/documentation/articles/hdinsight-use-hive/,但在更改查询源以使用文件时却陷入困境。
使用New-AzureHDInsightHiveJobDefinition -Query $queryString
时一切都很愉快,但当我尝试New-AzureHDInsightHiveJobDefinition -File "/example.hql"
存储在blob容器“root”中的example.hql
时,我得到了ExitCode 40000以及以下版本的标准:< / p>
Logging initialized using configuration in file:/C:/apps/dist/hive-0.11.0.1.3.7.1-01293/conf/hive-log4j.properties
FAILED: ParseException line 1:0 character 'Ã?' not supported here
line 1:1 character '»' not supported here
line 1:2 character '¿' not supported here
即使我故意拼错hql文件名,仍会生成上述错误以及预期的文件未找到错误,因此它不是导致错误的hql内容。
我无法在blob存储中找到hive-log4j.properties以查看它是否已损坏,我已拆除HDInsight群集并删除了相关的blob存储并重新启动但结果却相同。
真的很感激一些帮助!
答案 0 :(得分:3)
我可以通过将Utf-8或Unicode编码的.hql文件放入blob存储并尝试运行它来引发类似的错误。尝试在记事本中将example.hql文件保存为“ANSI”(打开,另存为,编码选项位于对话框的底部),然后将其复制到blob存储,然后重试。
如果在Start-AzureHDInsightJob上找不到该文件,则该cmdlet会出错并且不会返回新的AzureHDInsightJob对象。如果您保存了先前的结果实例,则后续的Wait-AzureHDInsightJob和Get-AzureHDInsightJobOutput将引用上一次运行,为 not found 情况提供相同错误的错觉。该错误肯定表明在不期望读取UTF-8或Unicode文件时会出现问题。