Dataproc Spark 3.1 中的 Sqoop 和 Avro 依赖问题

Sqoop and Avro depedency issue in Dataproc Spark 3.1

我正在 GCP Dataproc 中从 spark 2.4.7 升级到 spark 3.1。我正在执行 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 依赖项 jar 从旧版本替换为新版本,但问题仍然存在。我找不到解决这个问题的方法。

安装 Sqoop 1.5.0-SNAPSHOT 版本时是否存在 GCP Dataproc 依赖性问题?

此异常是由 SQOOP-3485 问题引起的。我们将在 2 周后的 Dataproc 2.0 映像中修复它。

同时,您可以尝试通过将 org.codehaus.jackson:jackson-mapper-asl:1.9.13 jar 添加到 Sqoop and/or 您的应用程序类路径来解决此问题。