다음 코드는 java.lang.NullPointerException의 원인입니다.scala java.lang.NullPointerException
val sqlContext = new SQLContext(sc)
val dataFramePerson = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").schema(CustomSchema1).load("c:\\temp\\test.csv")
val dataFrameAddress = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").schema(CustomSchema2).load("c:\\temp\\test2.csv")
val personData = dataFramePerson.map(data => {
val addressData = dataFrameAddress.filter(i => i.getAs("ID") == data.getAs("ID"));
var address:Address = null;
if (addressData != null) {
val addressRow = addressData.first;
address = addressRow.asInstanceOf[Address];
}
Person(data.getAs("Name"),data.getAs("Phone"),address)
})
나는 예외의 원인이되는 다음 줄로 좁혔습니다.
는val addressData = dataFrameAddress.filter(i => i.getAs("ID") == data.getAs("ID"));
사람이 문제가 무엇인지 지적 할 수 있습니까?
범인 라인과 같은 유형을 지정합니다. optionval personData = dataFramePerson.map (data => {'. personData가 무엇입니까? val 또는 var가 정의되어 있지 않고 다음 행에 있어야합니다. –
지저분한 코드를 찾아 주셔서 감사합니다. 붙여 넣기 문제가 아니며 실제 문제는 아니 었습니다. 코드는 이제 'dataFramePerson'에지도를 사용했을 때 – SYL
이라는 질문에 대해 수정되었습니다. 그 객체 또는 상수의 값만 그지도 기능. 당신은'dataFrameAddress' 나 그 맵 함수 안에있는 다른 객체들을 사용할 수 없습니다. –