我在 HDinsight 上使用 Hive,我想将作业的输出存储在 Azure 存储 (blob) 中。我试过了
INSERT OVERWRITE DIRECTORY 'wasb://mycontainer@myaccount.blob.core.windows.net/'
SELECT name, COUNT(*) as count FROM test
GROUP BY name
ORDER BY count DESC
但这返回错误“错误:java.lang.RuntimeException:配置对象时出错”。你能帮我把作业的输出重定向到 Azure blob 存储吗?
最佳答案
要指向 Azure Blob 存储,您需要使用 wasb://
或 wasbs://
uri 前缀,例如:
INSERT OVERWRITE DIRECTORY 'wasb://mycontainer@myaccount.blob.core.windows.net/output' ...
这篇文章有很多例子:http://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage/
我想你还需要在路径中提供一个目录。看起来 INSERT OVERWRITE 期望能够以根目录不允许的方式对目录进行操作。你能试试吗:
INSERT OVERWRITE DIRECTORY 'wasb://mycontainer@myaccount.blob.core.windows.net/output'
SELECT name, COUNT(*) as count FROM test
GROUP BY name
ORDER BY count DESC;
另外,不要忘记用 ; 结束表达式
最后,如果以上方法不起作用,您能否通过运行以下命令确认您可以从 Hive session 访问相关存储帐户:
dfs -ls wasb://mycontainer@myaccount.blob.core.windows.net/;
关于azure - HDinsight 配置单元输出到 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30226426/