sqoop会在启动时提取记录,还是在sqoop运行时将sqoop记录添加到表中?

时间:2016-07-08 15:41:14

标签: hive sqoop

我有一张表A,它不断更新新记录。我试图将表A中的记录平滑到HDFS,例如下午2:00 CT(源表A有5M记录),sqoop在CT下午4:00结束(表A有5.5M记录)。我的问题是

  • 目标或5.5M会有5M记录吗?

1 个答案:

答案 0 :(得分:1)

根据documentation,Sqoop使用read committed transaction isolation。因此,一旦执行了Sqoop在其下执行的(一个或多个)SELECT查询,“选定”记录将是将要插入Hive的记录(我假设您将数据导入Hive因为你在问题中使用的标签)。因此,决定最终导入的记录数(5M或5.5M记录)的是执行SELECT个查询,而不是整个导入过程所花费的总时间。

请记住,您可以通过指定要使用的映射器数量来控制导入过程的并行性(参数--num-mappers)。每个映射器都将执行独立的SELECT查询。

此外,您可以考虑使用incremental imports来检索导入过程完成后添加到数据库的新数据。此外,您还可以使用free-form queries对要导入数据库的数据量进行更精细的控制。