问题描述
distcp
首先写入临时文件,然后将其重命名为正确的文件名。
-rw-rw-rw- 1 3738 2021-05-24 12:04 s3a://testbucket/.distcp.tmp.attempt_1621587961870_0001_m_000000_0
在 s3 上并收到错误:
Error: java.io.IOException: File copy Failed: file:///testfile.json --> s3a://testbucket/testfile.json
解决方法
我在这里找到了: https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html
有一个参数:
-direct
直接写入目标路径当目标是对象存储时,可用于避免潜在的非常昂贵的临时文件重命名操作
示例
hadoop distcp -direct hdfs://nn1:8020/datasets/set1 s3a://bucket/datasets/set1
遗憾的是我的 distcp 版本太旧,没有这个功能。