package com.spark.core;

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 scala.Tuple2;

import java.util.Arrays;

public class WordCountLocalJava {

public static void main(String[] args) {

/*** 编写spark应用程序* 第一步,创建sparkconf对象,设置spark应用的配置信息* 使用setMaster可以设置spark程序要连接的spark集群的master节点的url* 设置为local,则代表本地运行*/

SparkConf conf = new SparkConf()

.setMaster("local[2]")

.setAppName("WordCountLocalJava");

/*** 第二步,创建JavaContext对象* 在spark中,SparkContext是spark所有功能的一个入口,无论是用java,scala还是python* 都必须要有一个sparkcontext,它的主要作用包括初始化spark应用程序所需要的一些组件,* 包括调度器(DAGScheduler,TaskScheduler),还会去spark master节点上注册等* 在spark中,编写不同的spark应用程序,使用的sparkcontext是不同的,如果使用的是scala,* 则是原生的sparkcontext对象,如果使用java,是javaContext对象等*/

JavaSparkContext jsc = new JavaSparkContext(conf);

/*** 第三步:要针对输入源(HDFS文件,本地文件等),创建初始的RDD* 输入源中的数据会打散,分配到RDD的每个Partition,从而形成一个初始的分布式数据集* sparkcontext中,用于根据文件类型的输入源创建RDD的方法,叫做textfile()方法* 在java中创建的普通RDD,都叫做JavaRDD*/

JavaRDD lines = jsc.textFile("data/wc.txt");

/*** 第四步:对初始RDD进行transformation操作* 通常操作会通过创建function,并配合RDD的map、flatmap等算子来执行* function如果比较简单,则创建指定function的匿名内部类* 如果比较复杂,则会单独创建一个类,作为实现这个function接口的类* 先将每一行拆分为单个的单词* FlatMapFunction有两个泛型参数,分别代表了输入和输出* 这里输入肯定是String,代表一行一行的文本,输出也是String,* FlatMap算子的作用,是将RDD的每一个元素拆分成一个或者多个元素*/

/*** 在IDEA中使用JDK8的Lamda expression时,要注意调整language level* 1、File --> Project Stucture ,在Project Structure中分别在project和model模块选择项目设置Lanugage level 8* 2、File --> Settings --> Compiler --> Java Compiler设置Project bytecode version;* 同时修改项目对应的Target bytecode version,确保配置的JDK的版本是1.8及以上** JDK8的Lamda expression使用起来和Scala的匿名函数非常相似*/

JavaRDD words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());

// 在Java中JavaPairRDD和mapToPair配合使用,构造键值对,这里使用了Scala的Tuple2数据类型 JavaPairRDD wordpair = words.mapToPair(word -> new Tuple2(word,1));

JavaPairRDD count = wordpair.reduceByKey((x,y) -> x+y);

count.foreach(x -> System.out.println(x));

jsc.close();

}

}

spark java 案例_Spark入门案例相关推荐

  1. Java拓展 - 正则表达式入门案例

    文章目录 初见正则表达式 练习三个案例 注意 练习获取百度热搜榜 注意 检索结果 练习获取所有IP地址 检索结果 初见正则表达式 练习三个案例 从一段文本中获取全部大小写字母 从一段文本中获取全部数字 ...

  2. java+selenium的入门 案例 selenium包 谷歌驱动包 火狐驱动包 IE驱动包 (一)

    目录 前言 selenium是什么? Selenium的下载使用 Selenium下载 Selenium下载地址 Selenium之谷歌驱动包 chromedriver包下载地址 Selenium使用 ...

  3. Java 百度地图入门 案例一

    实现效果: 随输入文字而变化进行智能搜索 以及 下方显示路线 代码: <html> <head><meta http-equiv="Content-Type&q ...

  4. spark java 计数_spark程序——统计包含字符a或者b的行数

    本篇分析一个spark例子程序. 程序实现的功能是:分别统计包含字符a.b的行数. java源码如下: package sparkTest; import org.apache.spark.Spark ...

  5. JAVA实现Token学习笔记001--Token入门案例

    Java大白话-–Token入门案例 Token入门案例今天为大家介绍一下Token的基本原理(以最直白的方式) 两片同样的钥匙 这是一家神奇的酒店,所有的客房居然都没有钥匙孔,可是每间房们前都做着一 ...

  6. Mybatis学习IDEA(1)-环境搭建以及入门案例

    Mybatis的环境搭建: 第一步:创建Maven项目 new Project->Maven->next->GroupId(反写域名如:com.itheima)ArtifactID( ...

  7. ActiveMQ-01-MQ概述,安装,入门案例

    文章目录 01.MQ概述 MQ的产品种类和对比 MQ的产生背景 MQ的主要作用 MQ的定义 MQ的特点 02.RPC架构 什么是RPC架构? 常见的RPC架构 03.ActiveMQ安装 04.入门案 ...

  8. 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  9. 09_Flink入门案例、word-count程序(java和scala版本)、添加依赖、Flink Streaming和Batch的区别 、在集群上执行程序等

    1.9.Flink入门案例-wordCount 1.9.1.开发工具 1.9.2.编写java版本word-count程序 1.9.2.1.添加Flink Maven依赖 1.9.2.2.编写word ...

最新文章

  1. Apache的服务端包含--SSI
  2. 蓝桥杯java第八届第三题--承压计算
  3. 数据库常考面试知识点
  4. logback slf4j_强制Tomcat通过SLF4J / Logback登录
  5. 浅析bootstrap原理及优缺点
  6. EOS源码分析:transaction的一生
  7. Java中的网络支持Socket应用
  8. ios下点击label包含的input checkbox或radio无效问题
  9. 混沌思维模型实战课课件分享
  10. Allwinner V3s RFBNet
  11. 阿里 70 后程序员的 24 个“避坑”法则
  12. html如何显示ppt首页,aspx怎样显示ppt转换的html页面
  13. 微信客服消息群发 php,利用客服消息和模板消息实现微信群发(突破群发接口的上限)...
  14. TeamViewer 如何注册账户?
  15. WordPress SEO优化:纯代码添加canonical标签
  16. 发布轻开平台移动App服务器
  17. windows下制作macos安装u盘_制作MacOS系统启动盘教程以及安装教程
  18. JavaScript RegExp 身份证、账号密码、email正则
  19. arm linux fpu,ARM处理器的浮点运算单元(FPU)
  20. 最短路径模板+解析——(FLoyd算法)

热门文章

  1. asp.net 用正则表达式过滤内容中的电话,qq,email
  2. CCNA初学者应该知道的词
  3. GDI+绘制的一个Report Designer原型
  4. 裘宗燕:C/C++ 语言中的表达式求值
  5. 老男孩python第一天笔记
  6. Java中线程的创建有两种方式
  7. Unity 2D 跑酷道路动起来
  8. 【Linux】设置vim格式
  9. IDEA开发vue.js卡顿
  10. SCP使用技巧-递归排除文件