Jag har ett mycket liknande problem istället med en Teradata-datakälla, och det kom till att kolumnen nullability på DataFrame inte matchade de underliggande data (kolumnen hade nullable=false, men vissa rader hade null-värden i det specifika fältet). Orsaken i mitt fall var att Teradata JDBC-drivrutinen inte returnerade korrekt kolumnmetadata. Jag har ännu inte hittat en lösning på detta.
För att se koden som genereras (inom vilken NPE kastas):
- importera org.apache.spark.sql.execution.debug.__
- ringa .debugCodegen() på DataSet/DataFrame
Hoppas detta hjälper.