Проблема зависимости Sqoop и Avro в Dataproc Spark 3.1

Я обновляю искру 2.4.7 до искры 3.1 в GCP Dataproc. Я делаю sqoop import и загружаю данные в файл Parquet. Код работает нормально в версии Spark 2.4.7, но выдает следующую ошибку в Spark 3.1.

2021-01-29 10:57:25,383 ERROR sqoop.Sqoop: Got exception running Sqoop: org.apache.avro.AvroRuntimeException: Unknown datum class: class org.codehaus.jackson.node.NullNode
org.apache.avro.AvroRuntimeException: Unknown datum class: class org.codehaus.jackson.node.NullNode
    at org.apache.avro.util.internal.JacksonUtils.toJson(JacksonUtils.java:87)
    at org.apache.avro.util.internal.JacksonUtils.toJsonNode(JacksonUtils.java:48)
    at org.apache.avro.Schema$Field.<init>(Schema.java:558)
    at org.apache.sqoop.orm.AvroSchemaGenerator.generate(AvroSchemaGenerator.java:100)
    at org.apache.sqoop.mapreduce.DataDrivenImportJob.generateAvroSchema(DataDrivenImportJob.java:131)
    at org.apache.sqoop.mapreduce.DataDrivenImportJob.configureMapper(DataDrivenImportJob.java:116)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:266)
    at org.apache.sqoop.manager.SqlManager.importQuery(SqlManager.java:747)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:536)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:633)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:146)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:182)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:233)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:242)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:251)

Я попытался заменить банку зависимостей Sqoop со старой версии на новую, но проблема не устранена. Я не могу найти способ решить эту проблему.

Это проблема зависимости GCP Dataproc, поскольку она устанавливает версию Sqoop 1.5.0-SNAPSHOT?


person Kshitij Bhadage    schedule 29.01.2021    source источник


Ответы (1)


Это исключение вызвано ошибкой SQOOP-3485. Мы исправим это в будущем выпуске образа Dataproc 2.0 через 2 недели.

Тем временем вы можете попытаться обойти это, добавив org.codehaus.jackson:jackson-mapper-asl:1.9.13 jar в Sqoop и/или путь к классам вашего приложения.

person Igor Dvorzhak    schedule 29.01.2021
comment
Я добавил указанный выше jar в папку /usr/lib/sqoop/lib/ и выполнил команду импорта sqoop. Та же ошибка сохраняется. Можете ли вы помочь мне с другим рабочим решением для этого? - person Kshitij Bhadage; 30.01.2021
comment
В этом случае единственным обходным решением является исправление SQOOP-3485 в транке Sqoop ( см. HIVE-24436 для аналогичного примера исправления в Hive), создайте новый Sqoop jar и используйте действие инициализации Dataproc, чтобы установить их в кластере Dataproc 2.0. В противном случае вам придется ждать развертывания исправления в следующем образе Dataproc 2.0 примерно через 2 недели. - person Igor Dvorzhak; 31.01.2021