2016-10-20 2 views
0

S3에서 특정 파일을 읽어야하므로 S3에 해당 파일의 경로가 포함 된 CSV 파일을 만들었습니다. 아래 코드를 사용하여 만든 CSV 파일을 읽는 중입니다.NULL 포인터 예외 foreach() 내에서 DF를 만드는 중

val listofFilesRDD = sparkSession.read.textFile("s3://"+ file) 

괜찮습니다. 그때 나는 그 경로의 각을 읽고 같은 dataframe 만들려고 오전 :

listofFilesRDD.foreach(iter => { 
    val pathDF = sparkSession.read 
    .schema(testSchema) 
    .option("headers", true) 
    .csv("s3://"+iter) 

    pathDF.printSchema() 
}) 

을하지만, 위의 코드는 NullPointerException이 있습니다.

그래서 위 코드를 어떻게 수정할 수 있습니까?

답변

2

당신은 다음과 같이 위의 문제를 해결 할 수 있습니다 간단한 S3 파일 경로의 배열을 만들고 그 배열을 반복하고 다음과 같이 그 내부 DF를 만들

val listofFilesRDD = sparkSession.read.textFile("s3://"+ file) 
val listOfPaths = listofFilesRDD.collect() 

    listOfPaths.foreach(iter => { 
    val pathDF = sparkSession.read 
    .schema(testSchema) 
    .option("headers", true) 
    .csv("s3://"+iter) 


pathDF.printSchema() 
})  
+0

예상대로 일했습니다. –