HDinsight 配置单元输出到 blob
HDinsight hive output to blob
我在 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
但是这返回了错误 "Error: java.lang.RuntimeException: Error in configuring object"。你能帮我把作业的输出重定向到 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 会话访问相关存储帐户
dfs -ls wasb://mycontainer@myaccount.blob.core.windows.net/;
正如 RickH 之前提到的,您缺少两件事 - 容器名称下的目录和 SELECT 语句后的半逗号。以下代码应该可以工作。
INSERT OVERWRITE DIRECTORY 'wasb://mycontainer@myaccount.blob.core.windows.net/2'
SELECT name, COUNT(*) as count FROM test
GROUP BY name
ORDER BY count DESC;
我在 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
但是这返回了错误 "Error: java.lang.RuntimeException: Error in configuring object"。你能帮我把作业的输出重定向到 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 会话访问相关存储帐户dfs -ls wasb://mycontainer@myaccount.blob.core.windows.net/;
正如 RickH 之前提到的,您缺少两件事 - 容器名称下的目录和 SELECT 语句后的半逗号。以下代码应该可以工作。
INSERT OVERWRITE DIRECTORY 'wasb://mycontainer@myaccount.blob.core.windows.net/2'
SELECT name, COUNT(*) as count FROM test
GROUP BY name
ORDER BY count DESC;