2011-10-28 6 views
3

У меня есть работа Amazon ElasticMapreduce настроить для запуска Hive QueryПочему результаты улья запроса разделить на несколько файлов

CREATE EXTERNAL TABLE output_dailies (
day string, type string, subType string, product string, productDetails string, 
uniqueUsers int, totalUsers int 
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n' 
STORED AS TEXTFILE 
LOCATION '${OUTPUT}'; 

INSERT OVERWRITE TABLE output_dailies 
select day, type, subType, product, productDetails, count(distinct accountId) as uniqueUsers, count(accountId) as totalUsers from raw_logs where day = '${QUERY_DATE}' group by day, type, subType, product, productDetails; 

После завершения задания, выход местоположение, который выполнен с возможностью быть на S3 , будет содержать 5 файлов с этим шаблоном task_201110280815_0001_r_00000x, где x идет от 0 до 4. Файлы маленькие, по 35 КБ каждый.

Возможно ли проинструктировать куст для хранения результатов в одном файле?

ответ

1

Они созданы различными узлами данных. Каждый из них присоединяется к файлу - если все они должны были добавляться в один и тот же файл, это потребует много блокировки и замедления.

Вы можете обрабатывать несколько файлов как один большой файл, просто ссылаясь на каталог и все его содержимое.

+0

Спасибо, Алекс. Кажется, для моих целей я могу просто объединить содержимое в один файл. – zsolt

+0

Я пытаюсь найти самую маленькую дату и одну самую большую дату из моих журналов более чем за 2 месяца данных. EMR испускает минимальные даты от каждого из разных узлов данных до 5 различных выходных файлов. В результате я получаю 5-минутные даты и 5 максимальных дат в 5 разных выходных файлах. Это не служит моей цели? Как объединить их все в один выходной файл, чтобы найти дату ONE min и дату ONE max по всему набору данных? –

2

В общем плане да это достижимо, но с потерей некоторой масштабируемости

Попробуйте использовать настройки

«установить mapred.reduce.tasks = 1;»

Это заставляет 1 редуктор и, следовательно, будет выведен только один файл.