azure - HDinsight 配置单元输出到 blob

标签 azure hadoop hive azure-hdinsight

我在 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/

相关文章:

hadoop - 如何使用MapReduce框架处理打开的文件

azure - 旧的 Azure WebJob 日志

azure - 分配给单个虚拟机的多个网络接口(interface)的 Terraform azure 输出

python - 将 Django 应用程序部署到生产环境 - Azure

java - Hadoop MapReduce RecordReader 实现是否必要?

hadoop - 如何在 MapReduce 作业中将文件添加到同一目录

hive 自动增加一定数量后

hadoop - 在 PySpark 中显示 Hive 查询的状态

azure - Hive CLI 和 Hiveserver2 元存储不一致

azure - Azure Synapse studio 的访问问题