Spark에서 제공하는 라이브러리 외에도 형태소 분석기나, 기존에 우리가 사용하던 라이브러리를 사용하는 방법에 대해서 설명한다. 클러스터의 모든 슬레이브에 /var/lib/의 이하 폴더에 사용할 라이브러리를 추가해 놓은 상태입니다. spark-shell이나 spark-submit을 할때 아래와 같이 --driver-class-path를 통해 라이브러리를 포함시키면 됩니다. 하지만 하나씩 하는건 무리가 있으니 아래와 같이 실행하면 모든 library를 한번에 import 할 수 있습니다. 

$ spark-shell --driver-class-path $(echo /var/lib/spark/*.jar | tr ' ' ',')

  하지만? 위처럼 하면 아래와 같은 Exception이 발생을 합니다. class의 path는 submit할때 jar내에 포함된 main 클래스가 포함된 *.class의 파일을 가리킬때 사용을 합니다. (저도 --driver-class-path인줄알고 계속 하고 있었는데, 동작하길래 맞는건줄 알았는데, 알고보니까 분산작업이 아닌 코드에서만 동작을 했던거였고, 각 worker-node에서 라이브러리를 로딩하기 위해서는 아래와 같이 실행.)

ClassNotFoundException이 발생했다. Lost task 0.0 in stage 20.0 (TID 69, slave02): java.lang.NoClassDefFoundError

$ spark-shell —jars $(echo /var/lib/spark/*.jar | tr ' ' ',')



+ Recent posts