将数据从一个群集复制到另一个群集时,Hadoop Distcp会中止

时间:2017-11-05 02:28:59

标签: apache hadoop hive bigdata distcp

我正在尝试将分区的Hive表的数据从一个群集复制到另一个群集。 我使用distcp来复制数据,但数据基础数据是分区的配置单元表。 我使用了以下命令。

hadoop distcp -i {src} {tgt}

但是当表被分区时,目录结构是根据分区表创建的。所以它显示错误创建重复和中止工作。

  

org.apache.hadoop.toolsCopyListing $ DulicateFileException:文件会导致重复。中止

我还使用了-skipcrccheck -update -overwrite,但都没有用。

如何将表的数据从分区文件路径复制到目标?

3 个答案:

答案 0 :(得分:0)

尝试使用此选项 -strategy dynamic 默认情况下,distcp使用uniformsize。

答案 1 :(得分:0)

检查以下设置以查看它们是否为false。将它们设置为true。

hive> set hive.mapred.supports.subdirectories;
hive.mapred.supports.subdirectories=false
hive> set mapreduce.input.fileinputformat.input.dir.recursive;
mapreduce.input.fileinputformat.input.dir.recursive=false

答案 2 :(得分:0)

hadoop distcp -Dmapreduce.map.memory.mb = 20480 -Dmapreduce.map.java.opts = -Xmx15360m -Dipc.client.fallback-to-simple-auth-allowed = true -Ddfs.checksum.type = CRC32C -米500 -pb -update -delete {src} {target}