2016-07-14 3 views
1

Я использую aws .net sdk для запуска задания s3distcp для EMR, чтобы объединить все файлы в папку с --groupBy arg. Но независимо от того, что «groupBy» аргументировал, я пробовал, он терпел неудачу все время или просто копировал файлы без конкатенации, например, если no -groupBy указан в списке arg.Как правильно управлять группой EMR S3DistCp?

файлы, расположенные в папке искровые saveAsTextFiles с именем, как показано ниже:

часть-0000
часть-0001
часть-0002
...
...

step.HadoopJarStep = new HadoopJarStepConfig 
      { 
       Jar = "/usr/share/aws/emr/s3-dist-cp/lib/s3-dist-cp.jar", 
       Args = new List<string> 
       { 
        "--s3Endpoint=s3-eu-west-1.amazonaws.com", 
        "--src=s3://foo/spark/result/bar" , 
        "--dest=s3://foo/spark/result-merged/bar", 
        "--groupBy=(part.*)", 
        "--targetSize=256" 

       } 
      }; 

ответ

5

После того, как все это было в течение всего этого дня, я начал работать с группойKey arg ниже:

--groupBy=.*part.*(\w+) 

Но даже если я добавлю --targetSize=1024 в args s3distcp, вы получите 2,5 МБ - 3 МБ файлов. Кто-нибудь есть об этом?

** * UPDATE * **

Здесь оговорка группиЙ который конкатенации всех файлов в один файл, в их собственной папке:

.*/(\\w+)/.* 

Последний "/" является так важно здесь --source = "s3: // Foo/искрового/результат /"

Там некоторые папки в "результат" папку:

s3://foo/spark/result/foo 
s3://foo/spark/result/bar 
s3://foo/spark/result/lorem 
s3://foo/spark/result/ipsum 

и в каждой папке выше есть hundres файлов, как:

part-0000 
part-0001 
part-0002 

.*/(\\w+)/.* этой группа по п группе каждый файл в каждой папке так что в конце концов вы получили один файл для каждой папки с именем папки

s3://foo/spark/result-merged/foo/foo -> File 
s3://foo/spark/result-merged/bar/bar -> File 
s3://foo/spark/result-merged/lorem/lorem -> File 
s3://foo/spark/result-merged/ipsum/ipsum -> File 

Итак, это последняя рабочая команда для меня:

s3-dist-cp --src s3://foo/spark/result/ --dest s3://foo/spark/results-merged --groupBy '.*/(\\w+)/.*' --targetSize 1024 

Спасибо.

+0

У меня очень похожая проблема с тем, что у вас было, но моя папка немного вложенная. Можете ли вы посмотреть https://stackoverflow.com/questions/46833387/using-groupby-while-copying- из-HDFS-к-s3-к-слияния-файлы-в-папки – Amistad

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