2018. 3. 29. 14:55ㆍProgramming/Scala
아래 형태의 코드를 스칼라를 이용해서 구현했다.
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를 할 수 있다.