Emrfs 文件与 s3 同步不工作
Emrfs file sync with s3 not working
在 Amazon EMR 集群上 运行 一个 spark 作业之后,我直接从 s3 中删除了输出文件并尝试再次重新运行该作业。我在尝试使用 sqlContext.write 在 s3 上写入 parquet 文件格式时收到以下错误:
'bucket/folder' present in the metadata but not s3
at com.amazon.ws.emr.hadoop.fs.consistency.ConsistencyCheckerS3FileSystem.getFileStatus(ConsistencyCheckerS3FileSystem.java:455)
我试过了运行
emrfs sync s3://bucket/folder
虽然它确实从跟踪元数据的 DynamoDB 实例中删除了一些记录,但似乎没有解决错误。不知道我还能尝试什么。我该如何解决这个错误?
原来我需要运行
emrfs delete s3://bucket/folder
首先在运行宁同步之前。 运行 以上解决了问题。
大多数情况下,一致的问题是由于 spark 和 hadoop 系统中的重试逻辑造成的。当在 s3 上创建文件的过程失败,但它已经在 dynamodb 中更新。当 hadoop 进程重新启动进程时,因为条目已经存在于 dynamodb 中。它抛出一致的错误。
如果要删除存储在dynamaoDB中的s3的元数据,其对象已经被删除。
这是步骤,
删除所有元数据
删除路径中的所有对象,
emrfs delete 使用哈希函数删除记录,因此它可能也会删除不需要的条目,因此我们在后续步骤中进行导入和同步
emrfs delete s3://path
将物理存在于 s3 中的对象的元数据检索到 dynamo db
emrfs import s3://path
在 s3 和元数据之间同步数据。
emrfs sync s3://path
完成所有操作后,查看该特定对象是否同时存在于 s3 和元数据中
emrfs diff s3://path
http://docs.aws.amazon.com/emr/latest/ManagementGuide/emrfs-cli-reference.html
我到达此页面是因为我收到错误消息“密钥在元数据中被标记为目录,但在 s3 中是文件”并且非常困惑。我认为发生的事情是我不小心创建了同名的文件和目录。通过删除文件,它解决了我的问题:
aws s3 rm s3://bucket/directory_name_without_trailing_slash
在 Amazon EMR 集群上 运行 一个 spark 作业之后,我直接从 s3 中删除了输出文件并尝试再次重新运行该作业。我在尝试使用 sqlContext.write 在 s3 上写入 parquet 文件格式时收到以下错误:
'bucket/folder' present in the metadata but not s3
at com.amazon.ws.emr.hadoop.fs.consistency.ConsistencyCheckerS3FileSystem.getFileStatus(ConsistencyCheckerS3FileSystem.java:455)
我试过了运行
emrfs sync s3://bucket/folder
虽然它确实从跟踪元数据的 DynamoDB 实例中删除了一些记录,但似乎没有解决错误。不知道我还能尝试什么。我该如何解决这个错误?
原来我需要运行
emrfs delete s3://bucket/folder
首先在运行宁同步之前。 运行 以上解决了问题。
大多数情况下,一致的问题是由于 spark 和 hadoop 系统中的重试逻辑造成的。当在 s3 上创建文件的过程失败,但它已经在 dynamodb 中更新。当 hadoop 进程重新启动进程时,因为条目已经存在于 dynamodb 中。它抛出一致的错误。
如果要删除存储在dynamaoDB中的s3的元数据,其对象已经被删除。 这是步骤, 删除所有元数据
删除路径中的所有对象, emrfs delete 使用哈希函数删除记录,因此它可能也会删除不需要的条目,因此我们在后续步骤中进行导入和同步
emrfs delete s3://path
将物理存在于 s3 中的对象的元数据检索到 dynamo db
emrfs import s3://path
在 s3 和元数据之间同步数据。
emrfs sync s3://path
完成所有操作后,查看该特定对象是否同时存在于 s3 和元数据中
emrfs diff s3://path
http://docs.aws.amazon.com/emr/latest/ManagementGuide/emrfs-cli-reference.html
我到达此页面是因为我收到错误消息“密钥在元数据中被标记为目录,但在 s3 中是文件”并且非常困惑。我认为发生的事情是我不小心创建了同名的文件和目录。通过删除文件,它解决了我的问题:
aws s3 rm s3://bucket/directory_name_without_trailing_slash