Результаты кустов не сохраняются в корзину S3

У меня проблемы с получением вывода Hive для сохранения в S3. я пытался sshвход в мастер-узел и выполнение моей команды в Hive, но это не сохраняет вывод. Я также попытался запустить команду в Hue с консоли EMR в AWS, но она не сохраняется на S3. Я также добавил сценарий в качестве шага, но он не сохраняется. Единственный способ получить результаты - запустить его в Hue, затем щелкнуть мышью, чтобы просмотреть результаты и загрузить его, а затем отправить их на S3. Я не знаю, почему это происходит. Вот запрос, который я выполняю.

with temp as (
select /*+ streamtable(l) */ a.id, a.name, a.page
from my_table a
join my_other_table l on (a.id = l.id)
group by a.page, a.id, a.name)
insert overwrite directory 's3://bucket/folder/folder2/folder3/folder4/folder5/folder6/folder7/'
select page, count(distinct id) over (PARTITION BY page)
from temp
group by page;

Как примечание, я бы предпочел, чтобы решение работало при добавлении шага, так как я планирую добавить x количество шагов последовательно.

2 ответа

Решение

Нормальный способ, которым я видел вывод Amazon EMR в Amazon S3, заключается в CREATE EXTERNAL TABLE с LOCATION в Amazon S3.

Например:

CREATE EXTERNAL TABLE IF NOT EXISTS output_table
(gram string, year int, ratio double, increase double)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://my-bucket/directory';

Тогда просто INSERT данные в эту таблицу:

INSERT OVERWRITE TABLE output_table
SELECT gram FROM table...

Я нашел решение.

Проблема заключалась в том, что в конце S3 location, базовый путь к каталогу, который вы хотите перезаписать, НЕ должен содержать косую черту.

Другие вопросы по тегам