스파크로 이것저것 테스트해보기 위해 zeppelin을 사용하는데 갑자기 이런 에러가 발생했다.
java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext.
즉, 지금 사용하려는 SparkContext가 이미 종료되었다는 것이다.
이걸 구글에 검색해도 ‘로그를 봐라’ 라는 식의 원론적인 답변이 나와서 헤매다가 해결방법이 떠올랐는데…
해결 방법
그냥 스파크 인터프리터를 재시작하면 된다.
인터프리터를 재시작하는 방법은 다음과 같다.
- 제플린 우측상단의 유저이름 클릭 -> Interpreter 클릭
- 인터프리터중
spark
를 찾아restart
버튼 클릭
restart를 누르면 스파크 인터프리터가 재시작이 되고, 조금 뒤에 다시 zeppelin paragraph를 다시 실행시키면 정상적으로 스파크컨텍스트를 받아올 수 있다.
안되면 일단 껐다 켜보자. 데이터가 날아가지만 않는다면.
원인 (추측)
사실 문제가 생겼을때 해결 방법보다 그 원인이 더 중요하다. 왜 잘 쓰던 sparkcontext가 사라졌을까…?
뭔가 session timeout과 관련이 있을것 같아서 찾아보았는데 아직 명쾌하지 않다.
뭔가 제플린의 Interpreter Lifecycle Management과 관련이 있을듯 한데 앞뒤가 안맞는 구석이 있다. 조금 더 확인해 보자…