Результаты кустов не сохраняются в корзину 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, базовый путь к каталогу, который вы хотите перезаписать, НЕ должен содержать косую черту.