본문 바로가기
Programming/Scala

[SPARK] RDD error 체크하기

by 유주원 2018. 3. 29.

아래 형태의 코드를 스칼라를 이용해서 구현했다.


for ( i <- 0 to 15) {

    try{

        val textFile = sc.textFile("/input/%02d/*".format(i))

        val count = textFile.count()

    }catch {

        case e: Exception =>

            println("Exception " + e)

    }

}


위의 경우에 해당하는 폴더가 없거나 파일이 없는 경우, textFile.count()를 하게 되면 exception 에러가 발생하고 종료하게 된다.

'아,,,, exception이 나더라도 그 다음 번 for문을 돌리고 싶은데 어떻게 해야 하지??'


scala에 대해 온갖 욕을 해대며 구글링 시작... Try라는 것을 발견했다. 사용법은 아래와 같다.


import scala.util.Try


val result = Try(textFile.count())


이렇게 Try로 감싸주게 되면 exception이 발생하지 않고 해당 성공, 실패 여부를 값으로 받아오게 된다.

받아온 값은 아래 함수를 통해 성공, 실패를 확인할 수가 있다.


if(result.isSuccess){

    println(result.get)

}else if(result.isFailure){

    println("Fail")

}


RDD 생성은 lazy evaluation 방식이라 null 여부를 확인하기 힘들었는데 Try를 사용해서 RDD error나 null check를 할 수 있다.