2014-11-13 3 views
3

Я провел тестовое задание AWS EMR с помощью настраиваемого устройства отображения, но с NONE в качестве редуктора. Я получил (ожидаемый) вывод в 13 отдельных «частичных» файлах. Как я могу объединить их в один файл?Объединение выходных данных AWS EMR

Мне не нужно собирать данные каким-либо особым образом, и мне все равно, отсортирован ли он, переупорядочен произвольно или оставлен в порядке. Но я хотел бы эффективно вернуть данные в один файл. Должен ли я делать это вручную или есть способ сделать это как часть кластера EMR?

Мне очень странно, что для этого нет опции по умолчанию или какой-либо автоматический шаг. Я немного читал об Identity Reducer. Делает ли он то, что я хочу, и если да, то как его использовать при запуске кластера через консоль EMR?

Мои данные находятся в S3.


EDIT

Чтобы быть ясно, я могу запустить cat на все выходные части после того, как дело сделано, если это то, что я должен делать. Локально, или в экземпляре EC2, или что-то еще. Это действительно то, что каждый делает?

+0

Посмотрите на [этот форум форум] (https://forums.aws.amazon.com/thread.jspa?threadID=34905). –

+1

@DonRoby Да видел это. Это 5 лет и не очень полезно. Как я могу поставить '-jobconf mapred.reduce.tasks = 1' при запуске заданий через консоль? Как я могу сказать, плохая идея или нет? – jmilloy

+0

Я не сделал этого ответа, потому что у меня не было возможности попробовать это сам. Вероятно, лучший способ узнать, хорошая ли это идея или нет, - попробовать ее с вашей реальной ситуацией. Похоже, что влияние на производительность сильно варьируется в зависимости от того, действительно ли код, который вы фактически уменьшил объем данных. –

ответ

2

Если выход из файлов Mapper части сами по себе маленьким, то вы можете попробовать использовать hadoop fs -getmerge, чтобы объединить их в локальную файловую систему:

hadoop fs -getmerge s3n://BUCKET/path/to/output/ [LOCAL_FILE] 

А затем положить объединённый файл обратно в S3:

hadoop fs -put [LOCAL_FILE] s3n://BUCKET/path/to/put/ 

для вышеупомянутых команд для работы вы должны иметь следующие свойства, установленные в core-site.xml

<property> 
    <name>fs.s3n.awsAccessKeyId</name> 
    <value>YOUR_ACCESS_KEY</value> 
</property> 

<property> 
    <name>fs.s3n.awsSecretAccessKey</name> 
    <value>YOUR_SECRET_ACCESS_KEY</value> 
</property> 
+0

, но где я запускаю эти команды с amazon emr? – member555

Смежные вопросы