apache-spark - 简而言之,Spark S3(或 S3A)提交者是什么以及何时应该使用它们?

标签 apache-spark amazon-s3

我发现一篇文章提到了 Spark S3 Magic Committer

有人可以解释一下什么是 Spark S3 提交者以及 Magic 提交者与其他提交者有何不同?我什么时候应该使用其中一种而不是另一种?

最佳答案

这很复杂。关键点:您无法使用重命名来安全/快速地将多个任务尝试的输出提交到聚合作业输出。

相反,特殊的“s3 提交者”使用 S3 的分段上传 API 来上传任务中的所有数据,但不是最终的 POST 来实现它;在作业提交中,这些 POST 已完成

  • S3A 暂存提交者:任务在开始上传之前将所有输出暂存到 localfs。需要 HDFS 或其他“真正的”文件系统将 list 文件从任务传递到作业提交者
  • S3A 魔法提交者:使用/滥用“魔法”路径重写来确定文件的最终目的地。应用程序创建一个文件到 s3a://bucket/dest/__magic/task1/__base/dir/file.parquet,最终文件将转到 s3a://bucket/dest/dir/file.parquet。不需要HDFS,但需要更多S3 IO。
  • EMR Spark 提交者。暂存提交者的 EMR 副本。在 EMR 上使用此功能。

在舞台和魔术之间?我会使用 hadoop-3.3.1 二进制文件,如果 HDFS 存在则暂存,如果不存在则使用 magic。

我还将 Apache Iceberg 作为长期替代方案

您一直想知道的一切:https://github.com/steveloughran/zero-rename-committer/releases/tag/tag_release_2021-05-17

关于apache-spark - 简而言之,Spark S3(或 S3A)提交者是什么以及何时应该使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70008471/

相关文章:

python - 使用 Boto3 将 S3 对象作为字符串打开

amazon-web-services - 云前线 : setting s3 path difference from Origin

angular - 上传文件到 S3 但返回 observable

java - Kryo 序列化程序在底层 Scala 类 WrappedArray 上导致异常

arrays - 用 PySpark 中的对应元素替换数组中的元素

Spark SQL 中的 SQL LIKE

amazon-web-services - 限制到 IP CIDR 范围的 S3 存储桶策略

hadoop - 要下载哪个版本的 Spark?

apache-spark - 如何创建自定义流数据源?

c# - 使用 .Net SDK 访问未使用美国区域的存储桶时出现问题