如何在 spark-submit 应用程序中执行 S3-dist-cp 命令

How can I execute a S3-dist-cp command within a spark-submit application

我有一个 jar 文件被提供给 spark-submit.With 在 jar 中的方法中。我正在尝试做一个

Import sys.process._
s3-dist-cp —src hdfs:///tasks/ —dest s3://<destination-bucket>

我还在所有 salves 和 master 上安装了 s3-dist-cp。 应用程序启动并成功,没有错误,但没有将数据移动到 S3。

这不是您问题的正确直接答案,但我使用了 hadoop distcp (https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html),它成功地移动了数据。在我的测试中,它与 spark.write.parquet(path) 相比相当慢(考虑到使用 hadoop distcp 所需的额外写入 hdfs 所花费的时间)。不过,我对您的问题的答案也很感兴趣;我认为 s3-dist-cp 可能会更快,因为亚马逊进行了额外的优化。

s3-dist-cp 现在是 EMR 集群主节点上的默认设置。

如果 spark 应用程序以 "client" 模式提交,我能够在 spark-submit 中成功执行 s3-dist-cp。