2012-12-27 63 views
2

我可以成功如何使用Sqoop从MySQL到Hive的增量导入?

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被正确的更新做从MySQL到HDFS使用Sqoop增量进口。

如果我尝试相同的过程,但将“--hive-import”添加到我的作业的定义中,它将成功执行,但不会更新incremental.last.value。

这是一个错误?意图行为?有没有人有从MySQL增量导入数据并通过Hive使其可用的过程?

我基本上希望我的Hadoop集群成为我的MySQL数据库的读取从属设备,以便进行快速分析。如果除Hive之外还有其他解决方案(猪会很好),我也很乐意听到。

+0

我只是在了解配置单元的过程中,还没有实际设置它。 我真的对这个问题的答案真的很感兴趣。 –

回答

0

选项--hive导入用于使用mapreduce作业在HDFS上创建表的已定义结构。而且,读取到Hive的数据是读取模式!。这意味着数据实际上并没有被导入到它,除非查询被执行。所以每次你运行一个文件,查询在Hive中的表上新(新鲜)执行。因此它不存储最后一个增量值。

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

0

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

0

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

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