Spark 不在 S3 上输出 .crc 文件

Spark doesn't output .crc files on S3

当我在本地使用 spark 时,在本地文件系统上写入数据时,它会创建一些有用的 .crc 文件。

在Aws EMR上使用相同的作业并在S3上写入,没有写入.crc文件。

这正常吗?有没有办法强制在 S3 上写入 .crc 文件?

这些 .crc 文件只是由 Hadoop FS 绑定的低级位创建的,因此它可以识别块何时损坏,并且在 HDFS 上切换到另一个数据节点的数据副本进行读取并开始重新复制其中一个好的副本。

在 S3 上,停止腐败由 AWS 负责。

从S3可以得到的是一个文件的etag,就是小上传的md5sum;在分段上传中,它是一些其他字符串,当您上传它时,它又会发生变化。

您可以使用 Hadoop 3.1+ 版本的 S3A 连接器获得此值,但默认情况下它是关闭的,因为从 HDFS 上传时 distcp 会非常混乱。对于早期版本,您无法获取它,aws s3 命令也不会显示它。您必须尝试其他一些 S3 库(毕竟这只是一个 HEAD 请求)