En cambio, tengo problemas muy similares con una fuente de datos de Teradata, y se redujo a que la nulabilidad de la columna en el DataFrame no coincidía con los datos subyacentes (la columna tenía anulable =falso, pero algunas filas tenían valores nulos en ese campo en particular). La causa en mi caso fue que el controlador JDBC de Teradata no devolvió los metadatos de columna correctos. Todavía tengo que encontrar una solución a esto.
Para ver el código que se está generando (dentro del cual se lanza el NPE):
- importar org.apache.spark.sql.execution.debug._
- llame a .debugCodegen() en el DataSet/DataFrame
Espero que esto ayude.