【问题标题】:How to load data incrementally using Sqoop with Avro as a data file?如何使用 Sqoop 和 Avro 作为数据文件增量加载数据?
【发布时间】:2019-08-16 07:26:13
【问题描述】:

出现以下错误:

--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

【问题讨论】:

  • 在创建集群的时候有没有使用初始化动作?

标签: sqoop avro google-cloud-dataproc data-ingestion


【解决方案1】:

虽然some discussion threads 可能似乎暗示了在应用于 Sqoop 1.4.7+ 的https://issues.apache.org/jira/browse/SQOOP-1094 中添加了对使用 lastmodifiedas-avrodatafile 的支持,但我们实际上可以看到您正在执行的特定用例在 1.4.6 和 1.4.7 中都被明确阻止:

https://github.com/apache/sqoop/blob/branch-1.4.6/src/java/org/apache/sqoop/tool/ImportTool.java#L1105 https://github.com/apache/sqoop/blob/branch-1.4.7/src/java/org/apache/sqoop/tool/ImportTool.java#L1153

所以branch-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);
}

您最好的选择可能是先以不同的文件格式导入,然后将您的 sqoop 作业与另一个作​​业串在一起,将您的中间文件格式转换为 Avro,如果这是您最终需要的。

至于本机 Sqoop 支持,提交此 JIRA 时似乎考虑了相同的问题,并指出尚不清楚快速失败检查是否仍然有效:https://issues.apache.org/jira/projects/SQOOP/issues/SQOOP-3369

您可以考虑订阅最后一个 jira,以跟踪为您的用例添加支持的进展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2017-11-02
    • 2014-11-25
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多