sqoop从hcatalog导出到mysql,并分配不同的列名称

fdx2calv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(509)

现在我的列配置单元表- id, name 和mysql表- number, id, name 我想要Map id (from hive)number (from mysql) , name (from hive)id (from mysql) .
我使用命令:

sqoop export --hcatalog-database <my_db> --hcatalog-table <my_table> --columns "number,id" \
  --connect jdbc:mysql://db...:3306/test \
  --username <my_user> --password <my_passwd> --table <my_mysql_table>

然而,它没有起作用。
类似于此案例的相同场景可以很好地工作[1]。可以通过在hdfs上定位配置单元表并使用以下命令来实现这一需求。

sqoop export --export-dir /[hdfs_path] --columns "number,id" \
  --connect jdbc:mysql://db...:3306/test \
  --username <my_user> --password <my_passwd> --table <my_mysql_table>

有什么解决方案可以通过hcatalog实现我的方案吗?
参考文献:
[1]. sqoop使用不同的列名称、列数和列顺序从配置单元导出到oracle

blmhpbnm

blmhpbnm1#

我没有使用sqoop的hcatalog部分,但是正如手册中所写的,下一个脚本应该完成以下工作:

sqoop export --hcatalog-database <my_db> --hcatalog-table <my_table> --map-column-hive "number,id" \
  --connect jdbc:mysql://db...:3306/test \
  --username <my_user> --password <my_passwd> --table <my_mysql_table>

此选项: --map-column-hive 何时与一起使用 --hcatalog ,为hcatalog而不是hive工作。
希望这对你有用。

相关问题