2

我可以使用 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 会很好),我也很想听听。

4

3 回答 3

0

选项 --hive import 用于使用 mapreduce 作业在 HDFS 上创建定义的表结构。此外,正在读取到 Hive 的数据是读取模式!!!.这意味着除非执行查询,否则数据实际上不会导入到其中。因此,每次运行文件时,都会在 Hive 表上新(新鲜)的模式上执行查询。因此它不会存储最后一个增量价值。

Hive 模式上的每个查询都被视为独立的,因为它在执行时运行并且不存储旧结果。

于 2014-08-11T20:45:40.150 回答
0

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

于 2014-08-12T08:09:30.433 回答
0

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

--check_colum colname=id -- incremental append or lastmodified --last_value $(HIVE_HOME /bin/hive -e'select max(id) from tablename') 
于 2016-03-22T06:35:07.883 回答