Apache Spark Java 자습서: 시작하기 위한 가장 간단한 가이드
9533 단어 machinelearningsparkbigdatajava
먼저 Apache Spark, 그 역사, 정의 및 작동 방식을 소개했습니다. 계속하려면 간단한 Spark 애플리케이션을 작성하는 방법을 살펴보겠습니다.
아파치 스파크의 역사
Apache Spark의 역사는 UC Berkeley에서 나타났습니다. 그곳에서 연구원 그룹은 MapReduce 작업의 상호 작용 부족을 인정했습니다. 데이터 세트의 크기에 따라 대규모 MapReduce 작업을 완료하는 데 몇 시간 또는 며칠이 걸릴 수 있습니다. 또한 전체 Hadoop 및 MapReduce 생태계는 복잡하고 배우기 어려웠습니다.
Apache Hadoop 프레임워크는 분산 데이터 세트에 병렬 프로그래밍 패러다임을 도입하는 분산 시스템을 위한 탁월한 솔루션이었습니다. 클러스터의 작업자 노드는 계산을 실행하고 결과를 집계하여 결과를 생성합니다. 그러나 Hadoop에는 몇 가지 단점이 있습니다. 시스템에는 정교한 설정이 필요하고 대화형이 아닙니다. 다행스럽게도 Apache Spark는 단순성과 속도를 구현했습니다.
아파치 스파크란?
Apache Spark는 많은 작업으로 구성된 애플리케이션 계산을 예약하고 배포할 수 있는 계산 엔진입니다. 계산 작업 또는 응용 프로그램이 단일 시스템에서 순차적으로 실행되지 않음을 의미합니다. 대신 Apache Spark는 계산을 별도의 더 작은 작업으로 분할하고 클러스터 내의 다른 서버에서 실행합니다. 따라서 병렬 처리의 힘을 극대화합니다.
Hadoop에 대한 또 다른 중요한 개선 사항은 속도입니다. 중간 계산 결과에 인메모리 스토리지를 사용하면 Apache Spark가 Hadoop MapReduce보다 훨씬 빠릅니다.
예제가 있는 아키텍처
Apache Spark는 마스터-슬레이브 아키텍처를 사용합니다. 즉, 한 노드가 다른 노드에서 실행할 계산을 조정합니다.
마스터 노드는 실행자가 드라이버 프로그램을 실행할 중앙 조정자입니다. 드라이버 프로그램은 Spark 작업을 더 작은 작업으로 분할하여 여러 분산 작업자 간에 실행합니다. 드라이버 프로그램은 SparkSession을 통해 분산 작업자 노드와 통신합니다.
Set Up Spark Java Program
Apache Spark Java 프로그램 작성
마지막으로 Apache Spark Java 자습서의 마지막 단계인 Apache Spark Java 프로그램의 코드를 작성합니다. 지금까지 프로젝트를 생성하고 데이터 세트를 다운로드했으므로 이 데이터를 분석하는 스파크 프로그램을 작성할 준비가 되었습니다. 구체적으로 유튜브 인기 타이틀에서 가장 자주 사용되는 단어를 알아본다.
More Detailed Explanations of the below code
public class YoutubeTitleWordCount {
private static final String COMMA_DELIMITER = ",";
public static void main(String[] args) throws IOException {
Logger.getLogger("org").setLevel(Level.ERROR);
// CREATE SPARK CONTEXT
SparkConf conf = new SparkConf().setAppName("wordCounts").setMaster("local[3]");
JavaSparkContext sparkContext = new JavaSparkContext(conf);
// LOAD DATASETS
JavaRDD<String> videos = sparkContext.textFile("data/youtube/USvideos.csv");
// TRANSFORMATIONS
JavaRDD<String> titles =videos
.map(YoutubeTitleWordCount::extractTitle)
.filter(StringUtils::isNotBlank);
JavaRDD<String> words = titles.flatMap( title -> Arrays.asList(title
.toLowerCase()
.trim()
.replaceAll("\\p{Punct}","")
.split(" ")).iterator());
// COUNTING
Map<String, Long> wordCounts = words.countByValue();
List<Map.Entry> sorted = wordCounts.entrySet().stream()
.sorted(Map.Entry.comparingByValue()).collect(Collectors.toList());
// DISPLAY
for (Map.Entry<String, Long> entry : sorted) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
public static String extractTitle(String videoLine){
try {
return videoLine.split(COMMA_DELIMITER)[2];
}catch (ArrayIndexOutOfBoundsException e){
return "";
}
}
}
이 기사를 즐기시기 바라며 이 블로그를 읽고 지원해 주셔서 대단히 감사합니다!
Reference
이 문제에 관하여(Apache Spark Java 자습서: 시작하기 위한 가장 간단한 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hellocodeclub/apache-spark-java-tutorial-simplest-guide-to-get-started-7hm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)