谁能告诉我在Pyspark中将文件从HDFS复制到S3的最强大方法是什么?
我正在考虑两个选项:
予。直接调用distcp,如下所示:
distcp_arglist =['/usr/lib/hadoop/bin/hadoop','distcp',
...,
'-overwrite',
src_path, dest_path]
II。使用s3-distcp
- 似乎更多涉及。
https://gist.github.com/okomestudio/699edbb8e095f07bafcc
欢迎任何建议。感谢。
答案 0 :(得分:2)
我将指出一些我的代码,cloudcp
这是在spark
中实现distCp 的概念的基本证明不做:
*增量写入(无论如何,您无法比较HDFS和S3之间的校验和,但它可以在复制之前检查fs.exists(path)
。
*权限。 S3没有它们
*节流
*首先安排大文件。你应该。
*恢复工作失败(无增量,见)
就像我说的那样,PoC要说"我们通过使用火花来解决繁重问题我们会更加敏捷"
无论如何,只要你不介意一些scala编码,你可以轻松地进行游戏,你可以轻松地在现有的火花环境中进行操作。
答案 1 :(得分:0)
Distcp 可能是最佳选择,因为它是在群集之间传输数据的成熟解决方案。我猜任何可能的替代方案都会做类似的事情 - 创建mapreduce作业来传输数据。这里重点是如何针对您的特定数据调整此过程,因为它可能真正取决于许多因素,如网络或地图缩减设置。我建议您阅读关于如何调整此过程的HortonWorks article