Self-Contained Applications
16 August 2019
Spark API를 사용하여 애플리케이션을 작성한다고 가정해보도록 합니다.
아래의 Java (Maven 기반)의 간단한 응용 프로그램을 살펴 보겠습니다.
이 예제는 Maven을 사용하여 JAR을 컴파일하지만, 다른 유사한 빌드 시스템으로도 작동합니다.
간단한 Spark 응용 프로그램 SimpleApp.java를 만들어보도록 하겠습니다.
/* SimpleApp.java */
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
public class SimpleApp {
public static void main(String[] args) {
String logFile = "YOUR_SPARK_HOME/README.md"; // Should be some file on your system
SparkSession spark = SparkSession.builder().appName("Simple Application").getOrCreate();
Dataset logData = spark.read().textFile(logFile).cache();
long numAs = logData.filter(s -> s.contains("a")).count();
long numBs = logData.filter(s -> s.contains("b")).count();
System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
spark.stop();
}
}
이 프로그램은 Spark README에서‘a’가 포함 된 줄과 ‘b’가 포함 된 줄의 갯수를 계산합니다.YOUR_SPARK_HOME을 실제 Spark가 설치된 위치로 바꿔야한다는 걸 명심하십시오.
Spark shell에서 자체 sparkSession을 초기화한 것과 달리,이 예제에서는 SparkSession을 프로그램의 일부로 초기화합니다.
프로그램을 빌드하기 위해 Spark를 dependency로 갖는 Maven pom.xml 파일도 작성합니다.
Spark artifact에는 Scala 버전이 태그되어 있습니다.
<project>
<groupId>edu.berkeley</groupId>
<artifactId>simple-project</artifactId>
<modelVersion>4.0.0</modelVersion>
<name>Simple Project</name>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>2.4.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
우리는 표준 Maven 디렉토리 구조에 따라 이 파일들을 배치합니다:
$ find .
./pom.xml
./src
./src/main
./src/main/java
./src/main/java/SimpleApp.java
이제 Maven을 사용하여 응용 프로그램을 패키징하고 ./bin/spark-submit을 사용하여 응용 프로그램을 실행할 수 있습니다.
# Package a JAR containing your application
$ mvn package
...
[INFO] Building jar: {..}/{..}/target/simple-project-1.0.jar
# Use spark-submit to run your application
$ YOUR_SPARK_HOME/bin/spark-submit \
--class "SimpleApp" \
--master local[4] \
target/simple-project-1.0.jar
...
Lines with a: 46, Lines with b: 23
참조 : https://spark.apache.org/docs/latest/quick-start.html#self-contained-applications