sak*_*ken 9 amazon-s3 amazon-emr pyspark
在Amazon EMR集群上运行spark作业后,我直接从s3删除了输出文件,并尝试再次重新运行作业.尝试使用sqlContext.write在s3上写入镶木地板文件格式时收到以下错误:
'bucket/folder' present in the metadata but not s3
at com.amazon.ws.emr.hadoop.fs.consistency.ConsistencyCheckerS3FileSystem.getFileStatus(ConsistencyCheckerS3FileSystem.java:455)
Run Code Online (Sandbox Code Playgroud)
我试过跑步
emrfs sync s3://bucket/folder
Run Code Online (Sandbox Code Playgroud)
即使它确实从跟踪元数据的DynamoDB实例中删除了一些记录,但它似乎没有解决错误.不确定我还能尝试什么.我该如何解决这个错误?
sak*_*ken 12
原来我需要跑
emrfs delete s3://bucket/folder
Run Code Online (Sandbox Code Playgroud)
首先在运行同步之前.运行以上解决了这个问题.
大多数情况下,一致的问题是由于spark和hadoop系统中的重试逻辑.当在s3上创建文件的过程失败时,它已在dynamodb中更新.当hadoop进程重启进程时,条目已存在于dynamodb中.它会抛出一致的错误.
如果要删除存储在dynamaoDB中的s3的元数据,其元素已被删除.这是步骤, 删除所有元数据
删除路径中的所有对象,emrfs delete使用哈希函数删除记录,因此它也可以删除不需要的条目,因此我们在后续步骤中进行导入和同步
emrfs delete s3://path
Run Code Online (Sandbox Code Playgroud)
将物理上存在于s3中的对象的元数据检索到dynamo db中
emrfs import s3://path
Run Code Online (Sandbox Code Playgroud)
在s3和元数据之间同步数据.
emrfs sync s3://path
Run Code Online (Sandbox Code Playgroud)
在所有操作之后,查看s3和元数据中是否存在该特定对象
emrfs diff s3://path
Run Code Online (Sandbox Code Playgroud)
http://docs.aws.amazon.com/emr/latest/ManagementGuide/emrfs-cli-reference.html
| 归档时间: |
|
| 查看次数: |
8350 次 |
| 最近记录: |