【发布时间】:2016-05-02 19:29:13
【问题描述】:
我有一个源 MySql 表。我必须将日期导出到 Hive 以进行分析。最初,当 MySQL 中的数据大小较小时,使用 Sqoop 将 Mysql 数据完全导出到 Hive 不是问题。 现在随着我的数据量增长,如何将 MySql 数据增量更新到 hive?
【问题讨论】:
我有一个源 MySql 表。我必须将日期导出到 Hive 以进行分析。最初,当 MySQL 中的数据大小较小时,使用 Sqoop 将 Mysql 数据完全导出到 Hive 不是问题。 现在随着我的数据量增长,如何将 MySql 数据增量更新到 hive?
【问题讨论】:
你可以使用sqoop进行增量更新,Sqoop文档很好,这里是链接 https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports
【讨论】:
这是使用 hive/spark 进行增量更新的示例。
scala> spark.sql("select * from table1").show
+---+---+---------+
| id|sal|timestamp|
+---+---+---------+
| 1|100| 30-08|
| 2|200| 30-08|
| 3|300| 30-08|
| 4|400| 30-08|
+---+---+---------+
scala> spark.sql("select * from table2").show
+---+----+---------+
| id| sal|timestamp|
+---+----+---------+
| 2| 300| 31-08|
| 4|1000| 31-08|
| 5| 500| 31-08|
| 6| 600| 31-08|
+---+----+---------+
scala> spark.sql("select b.id,b.sal from table1 a full outer join table2 b on a.id = b.id where b.id is not null union select a.id,a.sal from table1 a full outer join table2 b on a.id = b.id where b.id is null").show
+---+----+
| id| sal|
+---+----+
| 4|1000|
| 6| 600|
| 2| 300|
| 5| 500|
| 1| 100|
| 3| 300|
+---+----+
希望这个逻辑对你有用。
【讨论】: