반응형
IDE를 사용하지 않고, 리눅스 터미널 환경에서 메이븐 빌드를 하는 과정입니다. scala로 짜여진 스파크 프로그램을 실행하는 것까지 해보겠습니다.
1. 메이븐, 스칼라 설치 및 설정
- 테스트 환경
- JAVA : openJDK 1.8
- SPARK 2.4.3
- CentOS 6.9
- 메이븐을 설치합니다.
#다운로드 받을 디렉토리로 이동합니다.
cd /usr/share
#바이너리 파일을 다운받습니다.
wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
#압축을 풀어 설치합니다.
tar xvzf apache-maven-3.6.1-bin.tar.gz
메이븐 공식 홈페이지 : https://maven.apache.org/
- 스칼라를 설치합니다.
cd /usr/share
wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz
tar xvzf scala-2.12.8.tgz
스칼라 공식 홈페이지 : https://www.scala-lang.org/download/2.12.8.html
- 환경변수를 설정합니다.
vim /etc/profile
export M2_HOME=/usr/share/apache-maven-3.6.1 export PATH=$PATH:$M2_HOME/bin export SCALA_HOME=/usr/share/scala-2.12.4 export PATH=$PATH:$SCALA_HOME/bin |
source /etc/profile
2. 메이븐 프로젝트 만들기
- 우선 다음과 같은 구조로 디렉토리를 생성합니다. src/main/scala 에는 scala 코드파일을 저장할 것입니다.
└── scala-spark ├── pom.xml |
mkdir -p scala-spark/src/main/scala
touch pom.xml
3. pom.xml 작성
메이븐 프로젝트의 의존 라이브러리, 플러그인 등을 설정하는 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sunny</groupId>
<artifactId>test1</artifactId>
<version>0.13</version>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
- <depencency> : 의존성 라이브러리들을 적어줍니다.
- <build> : 메이븐 빌드설정을 해 줍니다.
- <plugin> : 메이븐 빌드 시 사용할 플러그인을 설정합니다.
- maven.scala-maven-plugin
- 메이븐에서 스칼라로 작성된 어플리케이션을 실행할 때 사용합니다.
- <execution> 을 compile로 설정하면 메이븐 run 수행 시 compile도 자동으로 진행됩니다.
- maven.scala-maven-plugin
4. 스파크 어플리케이션 작성 (scala)
로컬에 있는 json 파일을 로드하여 처리하는 어플리케이션을 작성합니다. 아파치 스파크 입문 단계에서 예제로 사용하시면 좋을 것 같습니다.
json 테스트 파일 다운로드 받는 방법입니다.
wget http://data.githubarchive.org/2015-03-01-0.json.gz
gunzip 2015-03-01-0.json.gz
vim scala-spark/src/main/scala/App_test.scala
import org.apache.spark.sql.SparkSession
import scala.io.Source.fromFile
object App_test {
def main(args : Array[String]) {
// 스파크 세션을 생성한다.
val spark = SparkSession.builder()
.appName("sunny test")
.master("local[*]")
.getOrCreate()
// 스파크 컨텍스트를 생성한다.
val sc = spark.sparkContext
// 로컬에 있는 json 파일을 로드한다.
val ghLog = spark.read.json("file:///home/sunny/spark/test_data/2015-03-01-0.json")
// json 파일의 데이터를 파싱한다.
val pushes = ghLog.filter("type = 'PushEvent'")
val grouped = pushes.groupBy("actor.login").count
val ordered = grouped.orderBy(grouped("count").desc)
// ordered 변수를 화면에 출력한다.
ordered.show()
}
}
5. 프로젝트 빌드 및 실행
pom.xml이 있는 디렉토리 경로에서 실행해야 합니다. 우리가 작성한 App_test 클래스를 실행하는 명령어입니다. 컴파일도 같이 진행됩니다. pom.xml 에서 <execution> 태그값을 compile로 설정했기 때문입니다.
mvn scala:run -DmainClass=App_test
빌드를 시작합니다.
spark 어플리케이션이 실행되면서 결과(ordered 변수)과 출력되는 것을 확인할 수 있습니다.
반응형
'BigData 기술 > Spark' 카테고리의 다른 글
jupyter 노트북에서 pyspark 사용하기 (2) | 2020.04.28 |
---|---|
docker로 spark-hadoop-cluster 구축하기 (4) | 2020.04.24 |
spark history 서버 설정 및 구동 (4) | 2020.04.22 |
[spark] 아파치 스파크 클러스터 종류 (2) | 2019.06.27 |
[spark] 아파치 스파크 설치 및 환경설정 (2) | 2019.06.24 |
댓글