【问题标题】:Incremental sqoop from oracle to hdfs with condition从 oracle 到 hdfs 的增量 sqoop 有条件
【发布时间】:2017-08-05 15:53:00
【问题描述】:

我正在做一个从到 hdfs oracle 的增量 sqooping,给出类似的条件

(LST_UPD_TMST >TO_TIMESTAMP('2016-05-31T18:55Z', 'YYYY-MM-DD"T"HH24:MI"Z"')
 AND LST_UPD_TMST <= TO_TIMESTAMP('2016-09-13T08:51Z', 'YYYY-MM-DD"T"HH24:MI"Z"'))

但它没有使用索引。如何通过仅考虑过滤记录来强制索引,以便 sqoop 可以更快。

执行增量 sqoop 的最佳选择是什么。 oracle 中的表大小以 TB 为单位。 表有数十亿行,在 where 条件之后它是几百万

【问题讨论】:

    标签: hadoop oracle11g hdfs sqoop


    【解决方案1】:

    您可以使用--where或--query与选择中的where条件过滤导入结果

    我不确定你的sqoop full命令,就这样试试吧

    sqoop import 
        --connect jdbc:oracle:thin:@//db.example.com/dbname \
        --username dbusername \
        --password dbpassword \
        --table tablename \
        --columns "column,names,to,select,in,comma,separeted" \
        --where "(LST_UPD_TMST >TO_TIMESTAMP('2016-05-31T18:55Z', 'YYYY-MM-DD\"T\"HH24:MI\"Z\"') AND LST_UPD_TMST <= TO_TIMESTAMP('2016-09-13T08:51Z', 'YYYY-MM-DD\"T\"HH24:MI\"Z\"'))" \
        --target-dir {hdfs/location/to/save/data/from/oracle} \
        --incremental lastmodified \
        --check-column LST_UPD_TMST \
        --last-value {from Date/Timestamp to Sqoop in incremental}
    

    查看更多关于sqoop incremental load的详细信息


    更新

    对于增量导入Sqoop 保存的作业建议自动维护--last-value。

    sqoop job --create {incremental job name} \
        -- import
        --connect jdbc:oracle:thin:@//db.example.com/dbname \
        --username dbusername \
        --password dbpassword \
        --table tablename \
        --columns "column,names,to,select,in,comma,separeted" \
        --incremental lastmodified \
        --check-column LST_UPD_TMST \
        --last-value 0 
    

    在这里--last-value 0 首次导入,然后是最新导入 值将在 sqoop 作业的下一次调用中自动传递

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多