我嚐試運行spark-dependent磚集群的應用程序:
我最終得到:
NoSuchMethodError: org.apache.spark.sql.execution.datasources.parquet.ParquetToSparkSchemaConverter。lessinit美元美元更大的默認4美元()Z
火花似乎包含在磚運行時12.2 LTS不包括提交改變ParquetToSparkSchemaConverter的定義:https://issues.apache.org/jira/browse/spark - 40819(火花github:https://github.com/apache/spark/blame/a7bbaca013ad1ae92a437b12206fadfe93fea10f/sql/core/src/main/sca..。。不管怎樣的差異可以通過比較發現火花和磚運行時的發布說明:
不管怎樣,我調查的情況下進一步拆卸類引發3.3.2
' ' '
從“ParquetSchemaConverter.scala”編譯
公共類org.apache.spark.sql.execution.datasources.parquet。ParquetToSparkSchemaConverter {
私人最終布爾assumeBinaryIsString;
私人最終布爾assumeInt96IsTimestamp;
私人最終布爾caseSensitive;
私人最終布爾nanosAsLong;
公共靜態布爾lessinit更多美元默認4美元();
代碼:
0:getstatic # 85 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 87 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter lessinit大默認4美元美元:Z ()
6:ireturn
公共靜態布爾lessinit美元更大的違約3美元();
代碼:
0:getstatic # 85 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 90 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約3:美元()Z
6:ireturn
公共靜態布爾lessinit美元更大的違約2美元();
代碼:
0:getstatic # 85 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 93 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約2:美元()Z
6:ireturn
公共靜態布爾lessinit美元更大的違約1美元();
代碼:
0:getstatic # 85 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 96 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約1:美元()Z
6:ireturn
' ' '
當檢查Databricks-provided jar:
' ' '
從“ParquetSchemaConverter.scala”編譯
公共類org.apache.spark.sql.execution.datasources.parquet。ParquetToSparkSchemaConverter {
私人最終布爾assumeBinaryIsString;
私人最終布爾assumeInt96IsTimestamp;
私人最終布爾caseSensitive;
公共靜態布爾lessinit美元更大的違約3美元();
代碼:
0:getstatic # 84 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 86 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約3:美元()Z
6:ireturn
公共靜態布爾lessinit美元更大的違約2美元();
代碼:
0:getstatic # 84 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 89 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約2:美元()Z
6:ireturn
公共靜態布爾lessinit美元更大的違約1美元();
代碼:
0:getstatic # 84 / /字段org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter .MODULE美元:Lorg / apache /火花/ sql /執行/數據源/拚花/ ParquetToSparkSchemaConverter美元;
3:invokevirtual # 92 / /方法org/apache/spark/sql/execution/datasources/parquet/ParquetToSparkSchemaConverter。lessinit美元更大的違約1:美元()Z
6:ireturn
' ' '
所以事實上的公共靜態布爾lessinit更多美元默認4美元()”不禮物。
誰能證實這一變化實際上是預期?應該如何處理