Thay vào đó, tôi gặp sự cố tương tự với nguồn dữ liệu Teradata và nó dẫn đến khả năng vô hiệu của cột trên DataFrame không khớp với dữ liệu cơ bản (cột có nullable =false, nhưng một số hàng có giá trị null trong trường cụ thể đó). Nguyên nhân trong trường hợp của tôi là Trình điều khiển Teradata JDBC không trả lại siêu dữ liệu cột chính xác. Tôi vẫn chưa tìm ra giải pháp cho vấn đề này.
Để xem mã đang được tạo (trong đó NPE đang được ném):
- nhập org.apache.spark.sql.execution.debug._
- gọi .debugCodegen () trên DataSet / DataFrame
Hy vọng điều này sẽ hữu ích.