메이븐 패키지를 맥에 설치
brew install maven
메이븐 기본 아키타입을 통해서 자바 테스트 앱 생성
mvn archetype:generate -DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
bash$> mvn archetype:generate -DgroupId=com.psyoblade.dm4ir \
-DartifactId=foo \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
실행 후에 아래와 같이 pom.xml 파일을 통해 확인
# cat foo/pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.psyoblade.dm4ir</groupId>
<artifactId>foo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>foo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
maven-archetype-quickstart 통해서 아래의 기본자바 앱은 이미 코드가 존재
# cat foo/src/main/java/com/psyoblade/dm4ir/App.java
package com.psyoblade.dm4ir;
public class App {
public static void main( String[] args ) {
System.out.println( "Hello World!" );
}
}
메이븐을 통해 빌드 및 테스트
mvn compile
mvn exec:java -Dexec.mainClass="com.psyoblade.dm4ir.App"
메이븐은 플러그인 덩어리인데 너무 많아 헛갈리는 경우가 많으므로 아래의 키워드로 항상 확인하는 습관
mvn help:describe -Dplugin=help
mvn help:describe -Dplugin=exec -Dfull
이제는 스파크 코어를 연동해보기 위해서는 스파크 관련 레퍼런스를 연결
mvnrepository.com 사이트에서 spark-core 를 검색하여 아래의 정보를 조회할 수 있다
http://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10/1.6.0
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.0</version>
</dependency>
위의 dependency 정보를 pom.xml 파일에 추가한다.
추가후 빌드 해도 성공만 했지 뭐가 달라진 것인지 모르겠다면 다음과 같이 종속성 확인
mvn dependency:resove
mvn dependency:tree
스파크 공식 페이지의 예제 프로그램 작성
package com.psyoblade.dm4ir;
/* SimpleApp.java */
import org.apache.spark.api.java.*;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.Function;
public class SimpleApp {
public static void main(String[] args) {
String sparkHomeReadme = "/usr/local/spark-1.5.2-bin-hadoop2.6/README.md";
SparkConf conf = new SparkConf().setAppName("Simple Application");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(sparkHomeReadme).cache();
long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("a"); }
}).count();
long numBs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("b"); }
}).count();
System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
}
}
스파크 잡 수행을 위한 패키지 생성 및 실행
mvn package
spark-submit --class "com.psyoblade.dm4ir.SimpleApp" --master "local" target/foo-1.0-SNAPSHOT.jar
Lines with a: 60, lines with b: 29
공식 메이븐 레파지토리 - mvnrepository.com
참고서적 - Maven : The Complete Reference
나의 경우에 아래와 같은 오류가 발생했는데 export SPARK_LOCAL_IP="" 으로 리셋으로 해결
16/02/04 22:55:47 ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Failed to bind to: /218.38.137.27:0: Service 'sparkDriver' failed after 16 retries!
export SPARK_LOCAL_IP=""
'프로그래밍 > scala' 카테고리의 다른 글
스칼라 match 표현식, 재귀호출 및 yeild 사용 예제 (0) | 2016.02.10 |
---|---|
스칼라 함수형 객체 (0) | 2016.01.21 |
스칼라의 기본 타입과 연산 (0) | 2016.01.16 |