我嘗試在安裝了 Spark 2.4.8 的 Cloud Dataproc 集群 1.4 上運行我的 Spark/Scala 代碼 2.3.0。我在讀取 avro 檔案時遇到錯誤。這是我的代碼:
sparkSession.read.format("com.databricks.spark.avro").load(input)
此代碼按預期失敗。然后我將此依賴項添加到我的pom.xml檔案中:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-avro_2.11</artifactId>
<version>2.4.0</version>
</dependency>
這使我的代碼成功運行。這是我不明白的部分,我仍在com.databricks.spark.avro我的代碼中使用該模塊。為什么添加org.apache.spark.avro依賴項解決了我的問題,知道我并沒有真正在我的代碼中使用它?
我期待我需要將我的代碼更改為這樣的:
sparkSession.read.format("avro").load(input)
uj5u.com熱心網友回復:
這是一個歷史性的事實,最初由 Databricks 在其專有的 Spark 運行時com.databricks.spark.avro格式中添加了 Spark Avro 支持,當 Sark Avro 支持作為格式添加到開源 Spark 時avro,為了向后兼容,com.databricks.spark.avro保留了對格式的支持,如果spark.sql.legacy.replaceDatabricksSparkAvro.enabled屬性設定為true:
如果設定為 true,則資料源提供程式 com.databricks.spark.avro 將映射到內置但外部的 Avro 資料源模塊以實作向后兼容性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393594.html
