如何使用sqoop从mysql增量导入到hive?

hec6srdp  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(438)

我可以通过使用sqoop成功地将mysql增量导入hdfs

sqoop job -create JOBNAME ... --incremental append --check-column id --last-value LAST
sqoop job -exec JOBNAME

以如下日志消息结束

INFO tool.ImportTool: Saving incremental import state to the metastore
INFO tool.ImportTool: Updated data for job: JOBNAME

并且检查作业会发现incremental.last.value已正确更新。
如果我尝试相同的过程,但将“--hive import”添加到作业的定义中,它将成功执行,但不会更新incremental.last.value。
这是虫子吗?预期行为?有人有从mysql增量导入数据并通过hive使其可用的过程吗?
我基本上希望我的hadoop集群成为mysql数据库的读从,以便快速分析。如果有别的解决办法,除了Hive(Pig会很好),我也很乐意听到。

c9qzyr3d

c9qzyr3d1#

您还可以手动创建外部配置单元表,因为这只是一次活动,您可以继续导入增量数据。

3pvhb19x

3pvhb19x2#

选项--hive import用于使用mapreduce作业在hdfs上创建表的已定义结构。此外,正在读取到hive的数据是read schema。这意味着除非执行查询,否则数据实际上不会导入到它上面。因此,每次运行文件时,查询都会在配置单元中表的新(新)架构上执行。因此,它不会存储最后的增量值。
配置单元架构上的每个查询都被视为独立的,因为它在执行时运行,并且不存储旧的结果。

68de4m5k

68de4m5k3#

我们可以使用下面的脚本获取最后一个值。

--check_colum colname=id -- incremental append or lastmodified --last_value $(HIVE_HOME /bin/hive -e'select max(id) from tablename')

相关问题