Spark开发-WordCount详细讲解Java版本
来源:互联网 发布:微信签到抽积分 源码 编辑:程序博客网 时间:2024/05/08 19:42
核心
用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等一系列操作
运行结果截图
阅读全文
0 0
- Spark开发-WordCount详细讲解Java版本
- Spark开发-WordCount详细讲解
- Spark开发-WordCount流程详细讲解
- Spark下如何运行Java版本的WordCount
- 010-spark standalone模式JAVA版本WordCount代码
- java spark WordCount
- Ubuntu 16.04 SPARK 开发环境搭建-- 伪分布版 与新建一个Spark版本的WordCount
- Spark Streaming开发入门——WordCount(Java&Scala)
- Spark核心编程:使用Java和Scala开发wordcount程序
- Spark Streaming开发入门——WordCount(Java&Scala)
- Spark之java操作WordCount
- Spark wordcount - Python, Scala, Java
- Spark Java 单词计数(WordCount)
- Spark 的JAVA版 wordCount
- Spark之java操作WordCount
- 大数据生态系统基础:Apache Spark(三):Java 版本编程实例(WordCount)
- Spark第一个程序开发 wordcount
- 使用eclipse开发spark程序 wordcount 事例
- 字符串匹配
- 安装及配置Maven环境变量
- Solr ClassNotFoundException
- jenkins升级注意事项
- MacOS 开发
- Spark开发-WordCount详细讲解Java版本
- angular01-入门
- java web个人博客开发(五页面开发)
- C++运算符优先级表
- SQL(Oracle)学习20170916
- 数据挖掘之Web挖掘和文本挖掘
- 利用for循环求1000到2000年间的闰年
- java动态代理-自己实现
- Python机器学习Sklearn入门之线性回归