代わりにTeradataデータソースで非常によく似た問題があり、DataFrameの列のNULL可能性が基になるデータと一致しませんでした(列にはnullable =falseがありましたが、一部の行にはその特定のフィールドにnull値がありました)。私の場合の原因は、TeradataJDBCDriverが正しい列メタデータを返さないことでした。これに対する回避策はまだ見つかりません。
生成されている(NPEがスローされている)コードを確認するには:
- import org.apache.spark.sql.execution.debug ._
- DataSet / DataFrameで.debugCodegen()を呼び出します
これがお役に立てば幸いです。