Mam bardzo podobne problemy ze źródłem danych Teradata i sprowadzało się to do wartości null kolumny w DataFrame, która nie pasowała do danych źródłowych (kolumna miała wartość nullable=false, ale niektóre wiersze miały wartości null w tym konkretnym polu). Przyczyną w moim przypadku był sterownik Teradata JDBC, który nie zwracał poprawnych metadanych kolumny. Jeszcze nie znalazłem obejścia tego problemu.
Aby zobaczyć generowany kod (w ramach którego rzucany jest NPE):
- importuj org.apache.spark.sql.execution.debug._
- wywołaj .debugCodegen() w DataSet/DataFrame
Mam nadzieję, że to pomoże.