我正在使用aws .net sdk运行一个s3distcp作业到EMR,将文件夹中的所有文件与--groupBy连接起来。但是不管我尝试过什么"groupBy“arg,它都失败了,或者只是复制文件而没有连接,就像arg列表中指定的no一样。
文件夹中的文件名为spark,如下所示:
部分-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"
}
};发布于 2016-07-14 13:42:52
在经历了一整天的挣扎之后,我终于得到了下面的groupKey arg:
--groupBy=.*part.*(\w+)但是,即使我将--targetSize=1024添加到args中,s3distcp也生成了2,5MB - 3MB文件。有人知道这件事吗?
** *更新* **
下面是groupBy子句,它将所有文件连接到一个文件中,放在它们自己的文件夹中:
.*/(\\w+)/.*最后一个"/“在这里是如此重要--来源=”s3://foo/火花/结果/“
“结果”文件夹中有一些文件夹:
s3://foo/spark/result/foo
s3://foo/spark/result/bar
s3://foo/spark/result/lorem
s3://foo/spark/result/ipsum在上面的每个文件夹中都有以下数百个文件:
part-0000
part-0001
part-0002.*/(\\w+)/.*这个group子句将每个文件夹中的每个文件分组,所以最后您为每个文件夹获得了一个文件,该文件夹名为
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谢谢。
https://stackoverflow.com/questions/38374107
复制相似问题