Spark開發-WordCount詳細講解Java版本
核心
用Java開發spark的第一個應用程式wordcount
環境
idea
java1.7
案例
package com.xlucas;
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 org.apache.spark.api.java.function.*;
import org.apache.spark.rdd.RDD;
import scala.Function1;
import scala.Tuple2;
import scala.collection.TraversableOnce;
import java.util.Arrays;
/**
* Created by xlucas on 2017/9/16.
* author :xlucas
* blog:www.xlucas.com
*/
public class WordCount {
public static void main(String[] args){
/**
第一步:建立spark的配置物件sparkconf,設定spark程式的執行時的配置資訊,例如說通過setMaster來設定程式
連結spark叢集的master的URL,如果設定為local,則代表spark程式在本地執行,
*/
SparkConf conf=new SparkConf().setAppName("WordCount").setMaster("local");
/*
第二步:建立JavaSparkContext物件,
JavaSparkContext是spark程式所有功能的唯一入口,無論是採用Scala,Java,Python,R等都必須有一個JavaSparkContext
JavaSparkContext核心作用:初始化spark應用程式執行時候所需要的核心元件,包括DAGScheduler,TaskScheduler,SchedulerBackend
同時還會負責Spark程式往Master註冊程式等
JavaSparkContext是整個spark應用程式中最為至關重要的一個物件
*/
JavaSparkContext sc=new JavaSparkContext(conf);
/*
第3步:根據具體的資料來源 (HDFS,HBase,Local等)通過JavaSparkContext來建立JavaRDD
JavaRDD的建立有3種方式,外部的資料來源,根據scala集合,由其他的RDD操作
資料會被JavaRDD劃分成為一系列的Partitions,分配到每個Partition的資料屬於一個Task的處理範疇
*/
JavaRDD<String> lines=sc.textFile("E://data//LICENSE.txt",1);
/*
第4步:對初始的JavaRDD進行Transformation級別的處理,例如Map、filter等高階函式等的程式設計來進行具體的資料計算
在對每一行的字串拆分成單個單詞
在單詞的拆分的基礎上對每個單詞例項計算為1,也就是word=>(word,1)
在對每個單詞例項計數為1基礎上統計每個單詞在檔案中出現的總次數
*/
JavaRDD<String> Words = lines.flatMap(new FlatMapFunction<String,String>(){
@Override
public Iterable<String> call(String line) throws Exception {
return Arrays.asList(line.split(" "));
}
});
JavaPairRDD<String,Integer> pairs=Words.mapToPair(new PairFunction<String,String,Integer>(){
@Override
public Tuple2<String, Integer> call(String word) throws Exception {
return new Tuple2<String,Integer>(word,1);
}
});
JavaPairRDD<String,Integer> wordscount=pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1+v2;
}
});
wordscount.foreach(new VoidFunction<Tuple2<String, Integer>>() {
@Override
public void call(Tuple2<String, Integer> pairs) throws Exception {
System.out.println(pairs._1+" : "+pairs._2);
}
});
}
}
開發流程和Scala一樣的
先建立sparkConf–>JavaSparkContext—>JavaRDD等一系列操作
執行結果截圖
相關文章
- Spark開發-WordCount詳細講解Spark
- Spark開發-WordCount流程詳細講解Spark
- Java EL 詳細用法講解Java
- Java中的static詳細講解Java
- Spark開發-Spark核心細說Spark
- 第一個spark應用開發詳解(java版)SparkJava
- 09【線上日誌分析】之基於Spark Streaming Direct方式的WordCount最詳細案例(java版)SparkJava
- .Net for Spark 實現 WordCount 應用及除錯入坑詳解Spark除錯
- 指標的詳細講解指標
- dart類詳細講解Dart
- 詳細講解遊戲開發中的DirectX-tasy(II)(轉)遊戲開發
- Go Struct超詳細講解GoStruct
- Java集合詳解8:Java集合類細節精講,細節決定成敗Java
- 大資料開發-Spark Join原理詳解大資料Spark
- spark之 spark 2.2.0 Standalone安裝、wordCount演示Spark
- 教科書級講解,秒懂最詳細Java的註解Java
- react的詳細知識講解!React
- 詳細講解函式呼叫原理函式
- MyBatis-Plus詳細講解(一)MyBatis
- Struts配置檔案詳細講解
- java自帶執行緒池和佇列詳細講解Java執行緒佇列
- 幣幣交易模式系統開發技術丨質押邏輯詳細開發需求講解模式
- 機器學習之決策樹詳細講解及程式碼講解機器學習
- 詳細講解23種設計模式設計模式
- 最詳細的JVM&GC講解JVMGC
- HTML 超級連結詳細講解HTML
- oracle 9i statspack詳細講解Oracle
- Hadoop下面WordCount執行詳解Hadoop
- Java註解最全詳解(超級詳細)Java
- SpringBoot註解最全詳解(整合超詳細版本)Spring Boot
- 演算法--揹包九講(詳細講解+程式碼)演算法
- Java 併發開發:Lock 框架詳解Java框架
- 網路安全Bypass網路卡詳細講解
- DeFi和CeFi的區別詳細講解
- MVC 三層架構案例詳細講解MVC架構
- 詳細講解!RabbitMQ防止資料丟失MQ
- Spring @Conditional註解 詳細講解及示例Spring
- 詳細講解:零知識證明 之 zk-SNARK 開篇