Вывод куста HDinsight в большой двоичный объект

Я использую Hive в HDinsight и хочу сохранить выходные данные задания в хранилище Azure (большой двоичный объект). Я старался

INSERT OVERWRITE DIRECTORY 'wasb://[email protected]/'

SELECT name, COUNT(*) as count FROM test
  GROUP BY name
  ORDER BY count DESC

Но эта возвращенная ошибка «Ошибка: java.lang.RuntimeException: Ошибка при настройке объекта». Не могли бы вы помочь мне перенаправить выходные данные задания в хранилище BLOB-объектов Azure?


person Groot    schedule 13.05.2015    source источник


Ответы (2)


Чтобы указать на хранилище BLOB-объектов Azure, необходимо использовать префикс uri wasb:// или wasbs://, например:

INSERT OVERWRITE DIRECTORY 'wasb://[email protected]/output' ...

В этой статье много примеров: http://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage/

Я думаю, вам также нужно указать каталог в пути. Похоже, что INSERT OVERWRITE ожидает, что сможет работать с каталогом таким образом, который не разрешен в корне. Ты можешь попробовать:

INSERT OVERWRITE DIRECTORY 'wasb://[email protected]/output'

SELECT name, COUNT(*) as count FROM test
  GROUP BY name
  ORDER BY count DESC;

Кроме того, не забудьте завершить выражение символом ;

Наконец, если вышеуказанное не работает, можете ли вы подтвердить, что у вас есть доступ к рассматриваемой учетной записи хранения из сеанса Hive, просто запустив:

dfs -ls wasb://[email protected]/;
person RickH    schedule 14.05.2015
comment
ааа! Извиняюсь. Да -- я использовал wasb://.... в URI. (сейчас отредактировал мой пост). Я получил ошибку даже после использования wasb://... - person Groot; 14.05.2015
comment
Можете ли вы предоставить больше вашего сценария? Обычно после пути к каталогу у вас будет запрос SELECT, определяющий данные, которые вы хотите вывести в это место. См. cwiki.apache.org/confluence/display/Hive/ для полного синтаксиса. - person RickH; 14.05.2015
comment
Я отредактировал свой исходный пост с частью запроса SELECT. Спасибо! - person Groot; 14.05.2015
comment
Приятно слышать! Пожалуйста, отметьте как ответ, если это все, что вам нужно. - person RickH; 15.05.2015

Как уже упоминал RickH, вам не хватало двух вещей: каталога под именем контейнера и полузапятой после оператора SELECT. Следующий код должен работать.

INSERT OVERWRITE DIRECTORY 'wasb://[email protected]/2'

SELECT name, COUNT(*) as count FROM test
GROUP BY name
ORDER BY count DESC;
person Rashim Gupta    schedule 14.05.2015