我正在尝试将分区的Hive表的数据从一个群集复制到另一个群集。 我使用distcp来复制数据,但数据基础数据是分区的配置单元表。 我使用了以下命令。
hadoop distcp -i {src} {tgt}
但是当表被分区时,目录结构是根据分区表创建的。所以它显示错误创建重复和中止工作。
org.apache.hadoop.toolsCopyListing $ DulicateFileException:文件会导致重复。中止
我还使用了-skipcrccheck
-update
-overwrite
,但都没有用。
如何将表的数据从分区文件路径复制到目标?
答案 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}