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

实例:请务必仔细体会:

具体实例请关注我的微信公众号【程序员实用技能】

「欢迎关注,一起学习,一起进步」

图片

历史文章:

Hive常用命令你会哪些?

Hive,load data你真的会用吗?附全面解析

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页