우노
[AWS EMR] Spark, Breeze 서브 모듈 빌드해서 사용하기 본문
Spark 서브 모듈 빌드
spark 다운로드
사이트
- https://github.com/apache/spark
- Spark release : 3.1.1
- package type : Pre-build for Apache Hadoop 2.7
download
wget https://mirror.navercorp.com/apache/spark/spark-3.1.1/spark-3.1.1.tgz tar -xvzf spark-3.1.1.tgz
간단한 코드 수정 (오류 시 출력하는 문구 변경)
github reference code (Spark sparse - dense multiplication)
command
vi /home/hadoop/spark/mllib/src/main/scala/org/apache/spark/mllib/linalg/BLAS.scala
유효성 검사 false로 수정
vi /home/hadoop/spark/pom.xml # 검색 /scalastyle-maven-plugin
# 수정 # <failOnViolation>true</failOnViolation> --> <failOnViolation>false</failOnViolation> <plugin> <groupId>org.scalastyle</groupId> <artifactId>scalastyle-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <verbose>false</verbose> <failOnViolation>true</failOnViolation> <includeTestSourceDirectory>false</includeTestSourceDirectory> <failOnWarning>false</failOnWarning> <sourceDirectory>${basedir}/src/main/scala</sourceDirectory> <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory> <configLocation>scalastyle-config.xml</configLocation> <outputFile>${basedir}/target/scalastyle-output.xml</outputFile> <inputEncoding>${project.build.sourceEncoding}</inputEncoding> <outputEncoding>${project.reporting.outputEncoding}</outputEncoding> </configuration> <executions> <execution> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin>
Spark library 상위 디렉토리에서 Maven을 통해 spark-mllib 서브모듈만 jar 파일로 빌드
cd /home/hadoop/spark-3.1.1 ./build/mvn -pl :spark-mllib_2.12 -DskipTests clean install
빌드한 jar 파일을 EMR jar 디렉토리(/usr/lib/spark/jars)로 복사
sudo cp /home/hadoop/spark-3.1.1/mllib/target/spark-mllib_2.12-3.1.1.jar /usr/lib/spark/jars
복사 이후 /usr/local/spark/jars 내부에, 이전 버전의 spark jar 파일이 있다면 제거
cd /usr/lib/spark/jars sudo rm -rf spark-mllib_2.12-3.1.1-amzn-0.jar
EMR spark-shell 실행 후 코드 변경 확인
spark-shell
>> import org.apache.spark.mllib.linalg.SparseMatrix >> val sm = new SparseMatrix(2,3,Array(0,1,2,3), Array(0,1,0), Array(1.0,7.0,3.0)) // SparseMatrix * DenseMatrix 를 진행하지만 // 왼쪽 행렬의 열과 오른쪽 행렬의 행이 맞지 않아 오류가 발생하므로 // 오류 시 출력하는 문구가 정상적으로 변경되었는지 확인 가능 >> sm.multiply(sm.toDense)
Breeze library 빌드
breeze library clone
github reference
git clone
# git 설치 sudo yum install git -y # git clone git clone https://github.com/scalanlp/breeze.git breeze
간단한 코드 수정 (오류 시 출력하는 문구 변경)
github code (Breeze sparse - sparse multiplication code)
github code (Breeze sparse - dense multiplication code)
command
vi /home/hadoop/breeze/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala
breeze library 상위 디렉토리에서 sbt를 통해 jar 파일 빌드
# sbt 설치 sudo rm -f /etc/yum.repos.d/bintray-rpm.repo curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo sudo mv sbt-rpm.repo /etc/yum.repos.d/ sudo yum install sbt -y
cd /home/hadoop/breeze sbt package
빌드한 jar 파일을 EMR jar 폴더(/usr/local/spark/jars)로 복사
sudo cp /home/hadoop/breeze/math/target/scala-2.12/breeze_2.12-1.1.jar /usr/lib/spark/jars
복사 이후 /usr/local/spark/jars 내부에, 이전 버전의 breeze jar 파일이 있다면 제거
cd /usr/lib/spark/jars sudo rm -rf breeze_2.12-1.0.jar
EMR spark-shell 실행 후 코드 변경 확인
spark-shell
>> import breeze.linalg.CSCMatrix >> val sm = CSCMatrix((1,0),(11,0),(0,1)) // SparseMatrix * SparseMatrix 를 진행하지만 // 왼쪽 행렬의 열과 오른쪽 행렬의 행이 맞지 않아 오류가 발생하므로 // 오류 시 출력하는 문구가 정상적으로 변경되었는지 확인 가능 >> sm * sm
'AWS > EMR' 카테고리의 다른 글
[AWS EMR] 쉘 스크립트를 이용한 실험자동화 part 2 (0) | 2020.12.06 |
---|---|
[AWS EMR] yarn-site.xml 위치 (0) | 2020.10.27 |
[AWS EMR] EMR 재시작 방법 (0) | 2020.10.27 |
[AWS EMR] spark jar 파일 위치 (0) | 2020.07.15 |
[AWS EMR] spark-defaults.conf 위치 (0) | 2020.07.10 |
Comments