gpt4 book ai didi

mysql - 如何使用 Sqoop 自动同步 MySQL 表和 Hive 外部表?

转载 作者:可可西里 更新时间:2023-11-01 15:04:00 35 4
gpt4 key购买 nike

我自己的本地机器 (Linux) 中已经有一个 MySQL 表,并且我有一个与 MySQL 表具有相同架构的 Hive 外部表。

我正在尝试将数据从 MySQL 表导入到我的 Hive 外部表,为此我正在使用 Sqoop。

但问题是,每当有新记录被添加到 MySQL 表时,它不会自动更新 Hive 外部表?

这是我正在使用的 Sqoop 导入命令:

sqoop import --connect jdbc:mysql://localhost:3306/sqoop --username root -P --split-by id --columns id,name,age,salary --table customer --target-dir /user/chamith/mysqlhivetest/ --fields-terminated-by ","  --hive-import --hive-table test.customers

我是不是漏掉了什么?或者如何做到这一点?

如有任何帮助,我们将不胜感激。

最佳答案

在您的情况下,新行附加到表中。所以你需要使用增量追加方法。

什么时候使用追加模式?

  • 适用于随时间递增的数值数据,例如自增键
  • 导入不断添加新行的表时随着行 ID 值的增加

现在你需要在命令中添加什么

-check-column 指定在确定要导入的行时要检查的列。

--incremental 指定 Sqoop 如何确定哪些行是新的。

--last-value 指定上一次导入的检查列的最大值

执行此操作的理想方法是使用 sqoop 作业,因为在这种情况下 sqoop Metastore 会自动记住最后一个值

第 1 步:使用正常导入命令初始加载数据。

第 2 步:

sqoop job --create incrementalImportJob -- import \
--connect jdbc:mysql://localhost:3306/sqoop
--username root
-P
--split-by id
--columns id,name,age,salary
--table customer
--incremental append \
--check-column id \
--last-value 5
--fields-terminated-by ","
--target-dir hdfs://ip:8020/path/to/table/;

希望这有帮助..

关于mysql - 如何使用 Sqoop 自动同步 MySQL 表和 Hive 外部表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143871/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com