sqoop` --direct`不能用`--incremental lastmodified`吗?

时间:2015-08-19 07:26:20

标签: sqoop hadoop2

我试图测试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并不支持导入某些数据类型,但我不认为这是这种情况。

1 个答案:

答案 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无法共存的原因。