0

我正在尝试使用distcp.

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

是否可以省略重命名并直接写入最终文件名?

4

1 回答 1

0

我在这里找到了它: https ://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html

有一个参数:

-direct 

当目标是对象存储时,直接写入目标路径有助于避免可能非常昂贵的临时文件重命名操作

例子

hadoop distcp -direct hdfs://nn1:8020/datasets/set1 s3a://bucket/datasets/set1

不幸的是,我的 distcp 版本太旧了,没有这个功能。

于 2021-05-24T19:33:12.960 回答