2

出现以下错误:

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

1 回答 1

2

虽然一些讨论线程似乎暗示在适用于 Sqoop 1.4.7+ 的https://issues.apache.org/jira/browse/SQOOP-1094中添加了对使用lastmodifiedwith的支持,但我们实际上可以看到特定用途如果您在 1.4.6 和 1.4.7 中被明确阻止:as-avrodatafile

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/项目/SQOOP/问题/SQOOP-3369

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

于 2019-08-21T01:04:29.123 回答