spark 자바 api 입문
자바,spark 기본 지식 구비
설치,설정 은 스스로 해결 할 수 있어 야 합 니 다.
첫걸음
pom.xml
4.0.0
com
spark
0.0.1-SNAPSHOT
jar
UTF-8
1.8
1.8
org.apache.spark
spark-core_2.11
2.4.5
provided
com.alibaba
fastjson
1.2.59
org.apache.maven.plugins
maven-shade-plugin
com.spark.JavaWordCount
package
shade
두 번 째 단 계 는 단어 기능 의 실현 을 통계 한다.
로 컬 에서 직접 디 버 깅 할 수 있 습 니 다.conf.setMaster("local[2]");/로 컬 2 작업 스 레 드
package com.spark;
import java.util.Arrays;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import com.alibaba.fastjson.JSON;
import scala.Tuple2;
public class JavaWordCount {
// ,
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setAppName("JavaWordCount");
//idea local
conf.setMaster("local[2]");
JavaSparkContext jsc = new JavaSparkContext(conf);
//
JavaRDD lines = jsc.textFile(args[0]);
JavaRDD words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
JavaPairRDD tup = words.mapToPair(word -> new Tuple2<>(word, 1));
JavaPairRDD reduced = tup.reduceByKey((x, y) -> x + y);
JavaPairRDD swap = reduced.mapToPair(tup2 -> tup2.swap());
JavaPairRDD sort = swap.sortByKey();
JavaPairRDD res = sort.mapToPair(tup3 -> tup3.swap());
String json = JSON.toJSONString(res.collect());
System.out.println(json);
// , ,
res.saveAsTextFile(args[1]);
jsc.close();
}
}
세 번 째 포장,군집 운행
먼저 conf.setMaster("local[2]")를 주석 합 니 다.이 줄 은 군집 에서 운행 할 준 비 를 하고 있다.
다음은 실행 명령--deploy-mode cluster 를 추가 하지 않 으 면 client 모드 입 니 다.
[root@ spark-2.4.5-bin-hadoop2.7]# ./bin/spark-submit \
--class com.spark.JavaWordCount \
--master spark://192.168.8.3:7077 \
--deploy-mode cluster \
--verbose \
/home/app/spark-1.0-SNAPSHOT.jar \
/home/aaa.log \
/home/bbb
문제 1.정보 출력 이 없습니다.
$SPARK 를 꼭 오픈 하 세 요HOME/conf 아래 log4j,log4j.properties.template 를 log4j.properties 로 복사 합 니 다.그렇지 않 으 면 잘못된 정보 가 보이 지 않 습 니 다.
질문 2 class not found
포장 이 정상 인지 확인 합 니 다.
--class 가 정확 한 가방 이름과 클래스 이름 을 썼 는 지 확인 합 니 다.
질문 3 ERROR executor.CoarseGrained Executor 백 엔 드:공인 SIGNAL TERM
웹 ui 콘 솔 에서 로 그 를 볼 수 있 습 니 다.이 오류 메 시 지 를 출력 할 수 있 지만 응용 프로그램 에서 상 태 를 보 는 것 은 정상 적 인 FINISHED 입 니 다.
문제 의 원인:
동적 자원 배분 executors 수(spark.dynamic Allocation.enabled=true)를 사용 하기 때문에 executor 의 남 은 시간 이 spark.dynamic Allocation.executor IdleTimeout=60s 에 이 르 면 executor 는 삭 제 됩 니 다.
해결 방법:
spark.dynamicAllocation.enabled=false,동적 할당 실행 기 수 닫 기
혹은 이 잘못 을 무시 하고 spark 의 정상 적 인 메커니즘 임 을 알 면 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark 의 -- Spark Submit 제출 프로그램 상세 설명이 스 크 립 트 는 Spark 류 경로 (classpath) 와 응용 프로그램 의존 패 키 지 를 설정 할 수 있 고 서로 다른 Spark 가 지원 하 는 클 러 스 터 관리 와 배치 모드 를 설정 할 수 있 습 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.