使用--append和--incremental append将新行从RDBMS插入HDFS中的现有数据集之间有什么区别吗?我正在使用--append以及--where和--incremental追加--last-value。
答案 0 :(得分:5)
<%
require 'json'
hash = JSON[{"data":{"id":"1","type":"users","attributes":{"username":"Iggy1"},"relationships":{"items":{"data":[{"id":"1","type":"items"},{"id":"7","type":"items"}]},"lists":{"data":[{"id":"1","type":"lists"},{"id":"8","type":"lists"},{"id":"14","type":"lists"},{"id":"15","type":"lists"},{"id":"17","type":"lists"}]}}}}.to_json]
%>
<pre>
<%= JSON.pretty_generate(hash)%>
</pre>
将数据附加到HDFS中的现有数据集
--append
与以下内容相同:(仅将数据附加到现有数据集,也可附加重复项 - 注意:这不会覆盖数据但会追加):
--append
--where "dpt_id >10"
但不是以下选项(附加新数据并更新现有数据 - 无重复 - 注意:这不会覆盖数据,但会更新或追加)< / p>
--incremental append
--check-column dpt_id
--last-value 10
Sqoop支持两种类型的--incremental lastmodified
--check-column lastupdated
--last-value 20160802000000
导入:incremental
和append
。
您可以使用lastmodified
参数指定要执行的增量导入的类型。
<强> 追加: 强>
--incremental
模式,其中新行会随着行ID值的增加而不断添加。 append
指定包含行ID的列。 --check-column
指定值的行。<强> 上次更改时间: 强>
--last-value
模式。 您应该在源表的行可以更新时使用此,并且每次此类更新都会将最后修改的列的值设置为当前时间戳。 lastmodified
指定的时间戳更新的行。--last-value
,以确保仅导入新数据或更新数据。 答案 1 :(得分:1)
指定
--incremental lastmodified
将生成更新语句,因此将根据
中提到的列更新行(如果存在)--checkcolumn
提到
--incremental append
将插入重复的记录,因为它只会追加