我试图测试2个任务。 --incremental append
和--incremental lastmodified
。下面是mySQL数据库架构。
CREATE TABLE test1 (
id INT NOT NULL auto_increment,
name VARCHAR(100) NOT NULL,
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ( id )
);
以下代码sqoop可以使用。
sqoop import \
--connect jdbc:mysql://localhost/test \
--username fake \
--password fake \
--table test1 \
--incremental append \
--check-column id \
--last-value 9 \
--direct \
--num-mappers 1
但是,如果我使用--incremental lastmodified
执行--direct
,则不会返回任何已修改的记录。如果我在没有--direct
的情况下执行此操作,它将正常工作。
sqoop import \
--connect jdbc:mysql://localhost/test \
--username fake \
--password fake \
--table test1 \
--incremental lastmodified \
--merge-key id \
--check-column ts \
--direct \
--last-value "some time here" \
--num-mappers 1
这是为什么?我知道--direct
并不支持导入某些数据类型,但我不认为这是这种情况。
答案 0 :(得分:0)
直接模式不是使用JDBC驱动程序传输数据,而是将数据传输到本机实用程序。
如果使用MySQL <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div id="text1">text</div>
<div id="text2">video</div>
和mysqldump
。使用它有许多性能优势,但它有许多限制。
在mysqlimport
或--incremental lastmodified
期间生成自定义查询,其中比较表中的记录,以查找导入所需的记录集。
总结--incremental append
就像批量导入一样,单个字段没有查找,但--direct
或--incremental lastmodified
需要单独的字段进行查找才能找到收集和加载所需的数据进入hdfs。这就是--incremental append
和--direct
无法共存的原因。