Hadoop,distcp你真的会用吗?附避坑指南

distcp作用是从hdfs复制一个或多个数据文件或数据目录到一个指定目录下。会启动Map任务去复制,不会启动Reduce任务。

语法:

$ hadoop distcp  配置参数(-pt -overwrite等) hdfs:......源表1/dt=xxxx/  *hdfs:......源表2/dt=xxxx/* hdfs:......目的表/dt=xxxx $ hive -e "select * from 目的表 where dt = 'xxxx'"
  1. 以上命令是把源表1和源表2的dt=xxxx下的所有数据文件和子目录复制到目的表的dt=xxxx路径下。

  2. 即使目的分区路径不存在也不会报错,distcp会自动创建目的分区路径和添加分区信息(目的表需要先存在)。

  3. distcp有很多配置,比如复制时的最大网络带宽、最大map任务个数、是覆盖还是追加、是否保留源文件时间等等。

  4. '-pt'的作用是保留源文件的修改时间(不然复制到目的路径下的文件的修时间就是复制完成时的时间)

  5. '-overwrite'的作用是覆盖同名文件(不是覆盖路径),如果目的路径下不存在该源文件则是复制过来!(目的路径下的其他文件依然存在且无变化!)

  6. '-update'的作用是修改,如果目的路径已存在与源路径下的某个文件名和大小均相同的文件,则不再复制该文件(不管文件内容和文件修改时间是否变化)。只会复制目的路径下不存在文件、同名且文件大小不一致的文件。目的路径下的其他文件依然存在且无变化!

实例:请务必仔细体会:

具体实例请关注我的微信公众号【程序员实用技能】
#学习路径#
全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务