spark java 示例代码wordcount

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 org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;

/**
 * 使用Java的方式开发进行本地测试Spark的WordCount程序
 *
 * @author DT大数据梦工厂 http://weibo.com/ilovepains
 */
public class WordCountSpk {

  public static void main(String[] args) {
    /**
     * 第1步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,
     * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置
     * 为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差(例如 只有1G的内存)的初学者 *
     */
    SparkConf conf = new SparkConf().setAppName("Spark WordCount written by Java").setMaster("local");
    /**
     * 第2步:创建SparkContext对象
     * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python
     * 、R等都必须有一个SparkContext(不同的语言具体的类名称不同,如果是Java的话则为JavaSparkContext)
     * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler、TaskScheduler、
     * SchedulerBackend 同时还会负责Spark程序往Master注册程序等
     * SparkContext是整个Spark应用程序中最为至关重要的一个对象
     */
    JavaSparkContext sc = new JavaSparkContext(conf); // 其底层实际上就是Scala的SparkContext
    /**
     * 第3步:根据具体的数据来源(HDFS、HBase、Local FS、DB、S3等)通过JavaSparkContext来创建JavaRDD
     * JavaRDD的创建基本有三种方式:根据外部的数据来源(例如HDFS)、根据Scala集合、由其它的RDD操作
     * 数据会被RDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
     * 注意:文件路径不能直接用Windows路径中的反斜扛\,要改成Linux下的斜扛/
     */
    JavaRDD<String> lines = sc
        .textFile("D:/hu.txt");
    /**
     * 第4步:对初始的JavaRDD进行Transformation级别的处理,例如map、filter等高阶函数等的编程,来进行具体的数据计算
     * 第4.1步:讲每一行的字符串拆分成单个的单词
     */
    JavaRDD<String> words = lines
        .flatMap(new FlatMapFunction<String, String>() { // 如果是Scala,由于SAM转换,所以可以写成val
          // words =
          // lines.flatMap
          // { line =>
          // line.split(" ")}
          public Iterable<String> call(String line) throws Exception {
            return Arrays.asList(line.split(" "));
          }
        });
    /**
     * 第4步:对初始的JavaRDD进行Transformation级别的处理,例如map、filter等高阶函数等的编程,来进行具体的数据计算
     * 第4.2步:在单词拆分的基础上对每个单词实例计数为1,也就是word => (word, 1)
     */
    JavaPairRDD<String, Integer> pairs = words
        .mapToPair(new PairFunction<String, String, Integer>() {
          public Tuple2<String, Integer> call(String word)
              throws Exception {
            return new Tuple2<String, Integer>(word, 1);
          }
        });
    /**
     * 第4步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数等的编程,来进行具体的数据计算
     * 第4.3步:在每个单词实例计数为1基础之上统计每个单词在文件中出现的总次数
     */
    JavaPairRDD<String, Integer> wordsCount = pairs
        .reduceByKey(new Function2<Integer, Integer, Integer>() { // 对相同的Key,进行Value的累计(包括Local和Reducer级别同时Reduce)
          public Integer call(Integer v1, Integer v2)
              throws Exception {
            return v1 + v2;
          }
        });
    wordsCount.foreach(new VoidFunction<Tuple2<String, Integer>>() {
      public void call(Tuple2<String, Integer> pairs) throws Exception {
        System.out.println(pairs._1 + " : " + pairs._2);
      }
    });
    sc.close();
  }
}
时间: 2024-08-08 22:42:51

spark java 示例代码wordcount的相关文章

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮

Java示例代码

记录一些典型的Java代码. 一.文件读取 1 public class Test4 { 2 public static void main(String[] args) { 3 try { 4 FileReader fdFileReader=new FileReader("bitch.txt"); 5 BufferedReader bReader=new BufferedReader(fdFileReader); 6 String my=bReader.readLine(); 7 w

jxl创Excel档java示例代码说明

记得下载 并 导入jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import java.io.*; import jxl.*; import jxl.format.Colour; import jxl.write.*; public class JXLTest { private static WritableWorkbook book; private static Writ

Java 示例代码笔记(遗忘点)

1.trim() Scanner scanner=new Scanner(System.in); String s=scanner.nextLine(); //s=" SherlyHan " s.trim(); //s="SherlyHan"  去掉String首尾的空格 2.常见类型转换 (1)String->int int s1=Integer.parseInt(string); int s1=Integer.valueOf(string).intValu

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

【转载】常用 Java 静态代码分析工具的分析与比较

摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团

[转载] 常用 Java 静态代码分析工具的分析与比较

转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺

将java开发的wordcount程序提交到spark集群上运行

今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /spark.txt,即可. 第一:看整个代码视图 打开WordCountCluster.java源文件,修改此处代码: 第二步: 打好jar包,步骤是右击项目文件----RunAs--Run Configurations 照图填写,然后开始拷贝工程下的jar包,如图,注意是拷贝那个依赖jar包,不是第

Spark UDF Java 示例

Spark UDF Java 示例 在这篇文章中提到了用Spark做用户昵称文本聚类分析,聚类需要选定K个中心点,然后迭代计算其他样本点到中心点的距离.由于中文文字分词之后(n-gram)再加上昵称允许各个特殊字符(数字.字母.各种符号--),如果直接在原来的文本数据上进行聚类,由于文本的"多样性",聚类效果并不一定好.因此准确对昵称先进行一个预分类的过程,这里的分类不是机器学习里面的分类算法(逻辑回归.线性回归),而是根据昵称文本的特征进行分类:给定一个文本昵称字符串,分类方法逐个地