微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以使用 distcp 直接写入最终文件?

如何解决是否可以使用 distcp 直接写入最终文件?

我正在尝试使用 distcp文件上传到 s3a。

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 版本太旧,没有这个功能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。