当我在本地使用spark在本地文件系统上写入数据时,它会创建一些有用的.crc文件。
在AWS EMR上使用相同的作业并在S3上进行写入,不会写入.crc文件。
这正常吗?有没有办法强制在S3上写入.crc文件?
答案 0 :(得分:0)
这些.crc文件只是由Hadoop FS绑定的低级位创建的,因此它可以识别何时块损坏,并在HDFS上切换到另一个数据节点的数据副本以进行读取和踢出关闭其中一个好的副本的复制。
在S3上,停止损坏留给AWS。
您可以从S3下车的是文件的etag,即小文件上传时的md5sum;在分段上传中,它是其他一些字符串,在您上载时,它也会再次更改。
您可以使用Hadoop 3.1+版本的S3A连接器获得此值,尽管默认情况下它已关闭,因为从HDFS上载时distcp非常混乱。对于较早的版本,您无法使用它,aws s3
命令也不会显示它。您必须尝试其他一些S3库(毕竟,这只是一个HEAD请求)