Как постепенно загружать данные, используя Sqoop с Avro в качестве файла данных?

Получение ошибки ниже:

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

person DataVishesh    schedule 16.08.2019    source источник
comment
Использовали ли вы какие-либо действия по инициализации при создании кластера?   -  person Dennis Huo    schedule 21.08.2019


Ответы (1)


Хотя некоторые темы обсуждения могут подразумевать, что поддержка использования lastmodified с as-avrodatafile была добавлена ​​в https://issues.apache.org/jira/browse/SQOOP-1094, который применяется к Sqoop 1.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#L1105 https://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);
}

Вероятно, вам лучше всего будет сначала импортировать файл в другом формате, а затем связать задание sqoop с другим заданием, преобразующим промежуточный формат файла в Avro, если это то, что вам нужно в конце.

Что касается встроенной поддержки Sqoop, похоже, что этот JIRA был подан с учетом того же вопроса, отмечая, что неясно, предназначена ли проверка быстрого отказа по-прежнему действительна или нет: https://issues.apache.org/jira/projects/SQOOP/issues/SQOOP-3369

Вы можете подписаться на эту последнюю jira, чтобы следить за прогрессом в добавлении поддержки для вашего варианта использования.

person Dennis Huo    schedule 21.08.2019