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 ' ' ',')
'빅데이터 > Spark' 카테고리의 다른 글
[Spark] Pyspark에서 NoneType Filtering 하는 방법 (0) | 2019.03.24 |
---|---|
[Spark] Pyspark NoneType, null, blank, empty string 필터링 하는 방법 (0) | 2019.03.24 |
[Spark] timestamp에서 날짜 추출하는 방법 (month, day, hour) (0) | 2016.08.09 |
[Spark] Row의 Seq Collection으로 RDD, DataFrame 생성하기 (0) | 2016.08.03 |
[Spark] Json 포맷 처리하기 - Json Object List (0) | 2016.08.03 |