如何使用带有avro的sqoop作为数据文件增量加载数据?

qgelzfjb  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(417)

获取以下错误:

--incremental lastmodified cannot be used in conjunction with --as-avrodatafile.

运行命令时:

gcloud dataproc jobs submit hadoop \
    --project='aca-ingest-dev' \
    --cluster='sqoop-gcp-ingest-d3' \
    --region='us-east1' \
    --class=org.apache.sqoop.Sqoop \
    --jars='gs://aca_utilities_dev/ingestion_jars/sqoop-1.4.7-hadoop260.jar,gs://aca_utilities_dev/ingestion_jars/avro-tools-1.8.2.jar,gs://aca_utilities_dev/ingestion_jars/ojdbc7.jar' \
    -- \
    import \
    -Dmapreduce.job.user.classpath.first=true \
    --connect='jdbc:oracle:thin:@10.25.42.52:1521/uataca.aaamidatlantic.com' \
    --username='XX' --password-file='XX' \
    --query='select comm_ctr_i from tab1 where $CONDITIONS OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY' \
    --target-dir='gs://aca-ingest-d3-dev/hist_arch_call/source/2019-08-16_6' \
    --num-mappers=1 \
    --incremental=lastmodified \
    --check-column='arch_date' \
    --last-value='2019-08-16T06:07:37.036611' \
    --as-avrodatafile
x33g5p2x

x33g5p2x1#

虽然一些讨论线索似乎暗示 lastmodifiedas-avrodatafile 已添加到https://issues.apache.org/jira/browse/sqoop-1094 它应用于sqoop1.4.7+,我们实际上可以看到您正在练习的特定用例在1.4.6和1.4.7中都被显式阻止:
https://github.com/apache/sqoop/blob/branch-1.4.6/src/java/org/apache/sqoop/tool/importtool.java#l1105https用法:/github.com/apache/sqoop/blob/branch-1.4.7/src/java/org/apache/sqoop/tool/importtool.java#l1153
因此分支-1.4.7仍然有以下代码:

if (options.getIncrementalMode() == SqoopOptions.IncrementalMode.DateLastModified
    && options.getFileLayout() == SqoopOptions.FileLayout.AvroDataFile) {
  throw new InvalidOptionsException("--"
      + INCREMENT_TYPE_ARG + " lastmodified cannot be used in conjunction with --"
      + FMT_AVRODATAFILE_ARG + "." + HELP_STR);
}

也许你最好的选择是先导入一个不同的文件格式,然后用另一个将中间文件格式转换成avro的任务串接sqoop作业(如果你最终需要的话)。
至于本机sqoop支持,似乎提交这个jira时考虑了相同的问题,注意到还不清楚快速失败检查是否仍然有效:https://issues.apache.org/jira/projects/sqoop/issues/sqoop-3369
您可以考虑订阅最后一个jira,以跟踪为您的用例添加支持的进度。

相关问题