如何解决使用sqoop在同一hdfs位置导入多个表
有什么方法可以使用sqoop在单个HDFS位置导入多个表。我在db2模式(tab1,tab2,tab3,tab4,tab5)中有5个表,以及一个hdfs位置/ user / hive / db2_tables。我想按以下方式存储db2数据。
/user/hive/db2_tables/tab1
/user/hive/db2_tables/tab2
/user/hive/db2_tables/tab3
/user/hive/db2_tables/tab4
/user/hive/db2_tables/tab5
但是在导入第一个表后,当我在第二个sqoop命令中给同一个目标目录时,它的显示目录已经存在。 我正在使用以下sqoop命令。
sqoop import -Dmapreduce.output.basename="tab1" --connect jdbc:db2://xx.x.x.xxx:xxxxx/db2 --query
"select * from schemaname.tablename where \$CONDITIONS " --username username -P --split-by id
--target-dir /user/hive/db2_tables/ --fields-terminated-by '|'
解决方法
尝试使用warehouse-dir
代替target-dir
参数。
对于warehouse-dir
,您必须为表目标指定一个HDFS
父目录。
例如:db2_tables
,因此第一个表将转到/user/hive/db2_tables/tab1
,第二个表将转到/user/hive/db2_tables/tab2
,依此类推。
您的脚本如下:
sqoop import -Dmapreduce.output.basename="tab1" \
--connect jdbc:db2://xx.x.x.xxx:xxxxx/db2 \
--query "select * from schemaname.tablename where \$CONDITIONS " \
--username username -P \
--split-by id \
--warehouse-dir /user/hive/db2_tables/ \
--fields-terminated-by '|'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。