我试图将分区的Hive表的数据从一个集群复制到另一个集群。我使用distcp来复制数据,但数据基础数据是分区的配置单元表。我使用了以下命令。
hadoop distcp -i {src} {tgt}
但是当表被分区时,目录结构是根据分区表创建的。因此,它显示错误创建重复和中止作业。
org.apache.hadoop.toolsCopyListing $ DulicateFileException:文件会导致重复。中止
我也使用-skipcrccheck
-update
-overwrite
但没有用。
如何将表的数据从分区文件路径复制到目标?
尝试使用此选项-strategy dynamic默认情况下,distcp使用uniformsize。
检查以下设置以查看它们是否为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
hadoop distcp -Dmapreduce.map.memory.mb = 20480 -Dmapreduce.map.java.opts = -Xmx15360m -Dipc.client.fallback-to-simple-auth-allowed = true -Ddfs.checksum.type = CRC32C -m 500 \ -pb -update -delete {src} {target}