我可以使用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会很好),我也很乐意听到。
答案 0 :(得分:0)
选项--hive import用于使用mapreduce job在HDFS上创建表的定义结构。另外,正在读取到Hive的数据是读取架构!!! 。这意味着除非执行查询,否则数据实际上不会导入到它。所以每次运行一个文件时,查询都会在Hive的表中新近(刚刚)执行该模式。因此它不存储最后一个增量值。
Hive模式上的每个查询都被视为独立的,因为它在执行时运行并且不存储旧结果。
答案 1 :(得分:0)
您也可以手动创建外部配置单元表,因为它们只是一次性活动,并且可以像您一样继续导入增量数据。
答案 2 :(得分:0)
我们可以使用下面的脚本获取最后一个值。
--check_colum colname=id -- incremental append or lastmodified --last_value $(HIVE_HOME /bin/hive -e'select max(id) from tablename')