Zeppelin note 에 여러개의 paragraph가 있을 때, 상단의 'Run all paragraphs' 버튼을 누르거나, scheduler를 등록해두면 paragraph들이 하나씩 차례로 실행된다.
그런데 paragraph 들 중 서로 다른 종류의 interpreter들이 섞여 있는 경우는 각 interpreter들이 동시에 실행이 시작된다. 예를 들어 %spark (default), %sql, %sh (shell) 등의 paragraph들이 함께 있는 경우 각 interpreter들 실행이 동시에 실행된다.
따라서 순차적으로 실행시키기 위해서는 트릭이 필요하다.
paragraph 1: %spark
paragraph 2: %sh
이와 같은 경우 동시에 실행되므로, 차례로 paragraph 1 실행이 완료된 후에 paragraph 2 가 실행되게 하려면 paragraph 2를 다음과 같이 %spark 로 변경해주면 된다.
import sys.process._ "command" !! |
Zeppelin 이 왜 이렇게 동작하는지 이해가 되지 않는다. 당연히 모든 paragraph 들이 순서대로 실행될 줄 알았는데 그게 아니라서 원하는 결과가 나오지 않았고 원인을 파악하는 데도 한참 걸렸다. 동시 실행, 순차 실행을 제어할 수 있는 옵션이나 함수 같은 것이라도 있으면 좋겠는데 아직은 없는 것 같다.
댓글 없음:
댓글 쓰기