본문 바로가기

Programming/Tip&Informaion

[실수노트/Spark] Value at index 0 is null 에러 처리

Exception in thread "main" java.lang.NullPointerException: Value at index 0 is null
	at org.apache.spark.sql.Row.getAnyValAs(Row.scala:523)
	at org.apache.spark.sql.Row.getLong(Row.scala:253)
	at org.apache.spark.sql.Row.getLong$(Row.scala:253)
	at org.apache.spark.sql.catalyst.expressions.GenericRow.getLong(rows.scala:166)

와 같은 에러가 발생했다.

하필 인덱스가 0이라서 dataframe의 row가 0이여서 발생했다고 생각했다. 그래서 dataframe이 row가 0이 아닌 조건을 넣어서 해결하려고 했다.

 

if(df.isEmpty) {}
if(df == null) {}
if(df.head() == null) {}

근데 여전히 에러가 발생했다. 알고 보니 getLong(0) 처럼 index를 주면 해당 index의 컬럼의 값을 가져오는 것이여서 전체 dataframe이 null이 아니고 해당 column이 null이여서 발생한 문제였다. index를 확인했으면 바로 알 수 있는 문제였는데 0에 매몰되어 생각하지 못 했다.

 

결론적으로 해당 컬럼에 COALESCE를 적용하여 null이 안 나오게 한 뒤 해결했다.