Místo toho mám velmi podobné problémy se zdrojem dat Teradata a došlo k tomu, že možnost null ve sloupci DataFrame neodpovídala podkladovým datům (sloupec měl hodnotu nullable=false, ale některé řádky měly v tomto konkrétním poli hodnoty null). Příčinou v mém případě byl ovladač Teradata JDBC, který nevracel správná metadata sloupce. Ještě jsem nenašel řešení.
Chcete-li zobrazit kód, který je generován (v rámci kterého je vyvoláno NPE):
- importovat org.apache.spark.sql.execution.debug._
- zavolejte .debugCodegen() na DataSet/DataFrame
Doufám, že to pomůže.