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 의 정상 적 인 메커니즘 임 을 알 면 된다.
 
 

좋은 웹페이지 즐겨찾기