스칼라 언어를 사용 하 여 스파크 응용 프로그램 개발

출처: 인터넷
작성자: 사용자
키워드: 응용 프로그램 DFS 언어 발달 단계 수 있습니다.

스칼라 언어와 스파크 응용 프로그램 개발 [고토: 동의 블로그 http://www.dongxicheng.org]

그래서 그것은 스칼라를 사용 하 여 스파크 응용 프로그램을 개발할 자연 점화 커널 스칼라 언어에 의해 개발 된다. 스칼라 언어에 익숙하지 자바 프로그래머 또는 관련된 스칼라도 서에 대 한 스칼라 자습서는 웹 자습서 읽을 수 있습니다.

이 문서 3 스칼라 스파크 프로그래밍 예제, WordCount, TOPK 및 Sparkjoin를 대표 하는 불꽃의 세 가지 일반적인 응용 프로그램 소개 합니다.

1. WordCount 프로그래밍 예제

WordCount 분산된 응용 프로그램의 간단한 예제 중 하나입니다, 그리고 주요 기능은 입력된 디렉터리에서 모든 단어의 총 수를 계산 하 고 다음 단계를 작성 하는 것입니다.

1 단계:

4 개의 매개 변수는 Sparkcontext 개체를 만듭니다: 스파크 마스터 위치, 응용 프로그램 이름, 스파크 설치 디렉터리 및 병 저장 위치, 원사에 스파크, 처음 두 개의 매개 변수는 가장 중요 한로 " 원사 독립 실행형 ", 두 번째 매개 변수는 사용자 지정 문자열 예:

발 sc = 새로운 Sparkcontext (args (0), "WordCount",

System.getenv ("Spark_home"), Seq (System.getenv ("Spark_test_jar"))

2 단계:

입력된 데이터를 읽습니다. 텍스트에서에서 데이터를 읽기는 HDFs, Sparkcontext, 예를 들어 Hadoop에 Textinputformat 구문 분석 입력된 데이터를 사용 하 여 텍스트 함수를 사용 하는 RDD에 입력된 파일을 변환할 수 있습니다.

발 텍스트 = Sc.textfile (args (1))

물론, 스파크를 사용 하면 모든 Hadoop inputformat 이진 입력된 형식 Sequencefileinputformat, 어느 시점에서 작업할 수 있습니다 Sparkcontext에서 Hadooprdd 함수 예 등을 사용할 수 있습니다.

발 inputformatclass = Classof [sequencefileinputformat [텍스트, 텍스트]]

var Hadooprdd = Sc.hadooprdd (회의 Inputformatclass, Classof [텍스트], Classof[text])

또는 직접 Hadooprdd 개체를 만들:

var Hadooprdd = 새로운 Hadooprdd (사우스 캐롤라이나, 회의

Classof [sequencefileinputformat [텍스트, 텍스트, Classof [텍스트], Classof [텍스트]

3 단계:

RDD 변환 연산자 및 변환 rdd, 의해 WordCount, 먼저 해야 입력된 데이터의 각 줄에서 단어를 밖으로 구문 분석 하 고 다음, 양동이에 같은 단어를 넣어 하 고 다음 예를 들어 각 양동이에 각 단어의 빈도 계산:

발 결과 = hadooprdd.flatmap 없음;

케이스 (키, 값) = > value.tostring (). 분할 ("\\s+");

}.map (단어 = > (단어, 1)). Reducebykey (_ + _)

Flatmap 함수 여러 레코드에는 레코드를 변환 (한 대 다 관계), map 함수 변환 레코드를 다른 레코드 (일대일 관계), 및 Reducebykey 함수 양동이에 동일한 데이터를 분할 하 고 주요 단위로 계산. 이 함수들의 구체적인 의미를 참조할 수 있습니다: 변화를 촉발.

4 단계:

결과 RDD dataset는 HDFs에 저장합니다. Sparkcontext에는 Saveastextfile를 사용 하 여 HDFs 디렉토리, Hadoop에서 제공 하는 Textoutputformat 기본 데이터 집합을 저장 하 고 "(키, 값)" 형태로 각 레코드를 출력할 수 있습니다. 또한 예를 들면 sequencefile 형식과 등으로 데이터를 저장 하려면 Saveassequencefile 함수를 사용할 수 있습니다.

Result.saveassequencefile (args (2))

물론, 우리가 쓸 때 스파크 프로그램, 다음 두 개의 헤더 파일을 포함 시켜야:

가져오기 Org.apache.spark._

Sparkcontext 가져오기. _

WordCount 완전 한 프로그램에서 소개 되는 "아파치 스파크 학습: 이클립스 스파크 통합된 개발 환경을 사용 하 여" 시간에 대해 설명 하지는.

참고는 입력된 출력 파일을 지정 해야 입력된 디렉터리 같은 HDFs의 URI를 지정 하는 hdfs://hadoop-test/tmp/input, 출력 디렉터리는 hdfs://hadoop-test/tmp/output, 곳에, "HDFs : //hadoop-test "지정 됩니다 코어 site.xml 매개 변수 구성 대체 하 둡 구성 파일에서 Fs.default.name에 의해."

2. TOPK 프로그래밍 예제

TOPK 프로그램의 작업은 텍스트의 스택의 주파수를 계산 하 여 가장 빈번한 k-단어를 반환 것입니다. 두 가지 작업을 작성 해야 MapReduce로 구현 하는 경우: WordCount 및 TOPK, 그리고 어디 wordcount 부분 앞에 의해 구현 되었습니다, 한 일, 점화 하 고 다음 최고 K. 찾을 이전 구현에 따라 Note이 문서의 구현 최적입니다, 많은 개선의 여지가 있다.

1 단계:

먼저 다음과 같이 단어 빈도 따라 모든 단어를 정렬 해야 합니다.

발 정렬 없음; Result.map =

(키, 값)의 경우 = > (값, 키); 교환 키 및 값

}.sortbykey (true, 1)

2 단계: 첫 번째 k: 반환

발 topk = Sorted.top (args (3). ToInt)

3 단계: 인쇄 된 단어:

Topk.foreach (println)

참고 응용 프로그램 표준 출력의 콘텐츠에 대 한 원사 컨테이너 stdout 로그에 저장 됩니다. 원사,의 처음 두 표준 출력에 저장 됩니다, 각 컨테이너, 각각 stdout, stderr, 및 Syslog, 3 개의 로그 파일 하 고 세 번째는 log4j 인쇄 로그만 세 번째 로그 내용으로 일반적으로.

이 프로그램, 컴파일된 jar 패키지 및 실행된 스크립트의 전체 코드는 여기에서 다운로드할 수 있습니다. 다운로드 후, 따라는 "아파치 스파크 학습: 이클립스를 사용 하 여 스파크 통합된 개발 환경 구축" 프로세스 실행 하.

3. Sparkjoin 프로그래밍 예제

권장된 필드에는 잘 알려진 오픈 테스트 집합은 movielens, 다운로드 링크: http://grouplens.org/datasets/movielens/, 테스트 세트 포함 3 파일, 각각, Ratings.dat, Sers.dat Movies.dat, 특정 읽기: README.txt,이 섹션 Sparkjoin 인스턴스는 데이터 집합을 사용 하 여 Ratings.dat와 Movies.dat 두 개의 파일을 연결 하 여 이상 4.0의 평균 점수를 가진 영화의 목록을 가져옵니다: Ml-1 m. 프로그램 코드는 다음과 같습니다.

가져오기 Org.apache.spark._

Sparkcontext 가져오기. _

개체 Sparkjoin 없음

데 프 주 (args:array[string]) 없음

경우 (args.length!= 4) 없음

println ("사용은 Org.test.WordCount")

반환

}

발 sc = 새로운 Sparkcontext (args (0), "WordCount",

System.getenv ("Spark_home"), Seq (System.getenv ("Spark_test_jar"))

HDFS 파일에서 읽기 평가

발 텍스트 = Sc.textfile (args (1))

추출 (MovieID, 등급)

발 등급 = Textfile.map (라인 = > 없음

발 fileds = Line.split (":")

(Fileds (1). ToInt Fileds (2). ToDouble)

})

발 Moviescores 등급 =

. Groupbykey)

. 지도 (데이터 = > 없음

발 평균 = data._2.sum/data._2.size

(Data._1, 평균)

})

HDFS 파일에서 읽기 영화

발 영화 Sc.textfile (args (2)) =

발 movieskey = Movies.map (라인 = > 없음

발 fileds = Line.split (":")

(fileds (0). ToInt Fileds (1))

}). keyby (교 미 = > tup._1)

조인, 우리가 얻을 < 영화, moviename = "averagerating, =" >

발 결과 = Moviescores

. keyby (교 미 = > tup._1)

. 가입 (Movieskey)

. 필터 (f = > f._2._1._2 > 4.0)

. 지도 (f = > (F._1, f._2._1._2, f._2._2._2))

Result.saveastextfile (args (3))

}

}

당신은 수 코드를 다운로드, jar 패키지 컴파일하고 여기에서 스크립트를 실행 합니다.

이 프로그램을 직접 사용 스파크 쓰기 몇 가지 문제가, 상어는 스파크 하이브 대화형 쿼리 엔진, 특정 참조와 유사한 기반 상어 HQL 구현에 직접 작성할 수 있습니다: 상어.

4입니다. 요약

스파크 프로그래밍은 매우 스칼라 언어에 대 한 요구, 마찬가지로 Hadoop 프로그래밍 매우 자바 언어에서 요구 하는 만큼 가장 기본적인 구문을 작성 프로그램, 그리고 거기 몇 가지 일반적인 구문 및 식. 일반적으로, 프로그램 단지 스칼라, 자바, 그리고 Python 3 언어 인스턴스를 포함 한 공식적인 예제에서 모델링 하기 시작 했다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.