Spark中wordCount的常见写法

如何在IDEA中编写Spark的WordCount程序 1:spark shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDE中编制程序,然后打成jar包,然后提交到集群,最常用的是创建一个Maven项目,利用Maven来管理jar包的依赖。 2:配置Maven的pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave... 阅读详情

Spark的wordCount是入门级程序,下面我以Java为基础,分享3种基础的写法

1.JavaRDD加reduceByKey写法

SparkConf conf = new SparkConf();
conf.setAppName("topN");
conf.setMaster("local");
JavaSparkContext jsc = new JavaSparkContext(conf);
JavaRDD<String> lines = jsc.textFile("E:\\spark\\learn\\test.txt", 3);
//先分割每一行的词
JavaPairRDD<String, Integer> pairRdd = lines.flatMapToPair(new PairFlatMapFunction<String, String, Integer>(){

    public Iterator<Tuple2<String, Integer>> call(String s) throws Exception {
        List<Tuple2<String, Integer>> list = new ArrayList<Tuple2<String, Integer>>();
        String[] arr = s.split(" ");
        for(String str : arr){
            list.add(new Tuple2<String, Integer>(str, 1));
        }
        return list.iterator();
    }
});
//用reduceByKey去聚合相同的词
//后面两步,可以直接用reduceByKeyLocally(reduceByKey+collectAsMap)算子替代,这里更清楚将其分开
JavaPairRDD<String, Integer> pairCount = pairRdd.reduceByKey(new Function2<Integer, Integer, Integer>(){
    public Integer call(Integer v1, Integer v2){
        return v1 + v2;
    }
});

List<Tuple2<String, Integer>> list = pairCount .collect();
for(Tuple2<String, Integer> tuple2 : list){
    System.out.println(tuple2._1+"-"+tuple2._2);
}

2.JavaRDD+groupByKey

第一步也是先分割词,将每个词转化为(word, 1)的元组形式

下面用groupByKey将所有的词放到一个迭代器中,然后加每个迭代器中的值

JavaPairRDD<String, Iterable<Integer>> wordGroup = wordPair.groupByKey();
JavaPairRDD<String, Integer> wordCount = wordGroup.mapToPair(new PairFunction<Tuple2<String, Iterable<Integer>>, String, Integer>(){
    public Tuple2<String, Integer> call(Tuple2<String, Iterable<Integer>> t){
        Iterable<Integer> it = t._2();
        int num = 0;
        for(Integer i : it){
            num = num + i;
        }
        return new Tuple2<String, Integer>(t._1(), num);
    }

});
List<Tuple2<String, Integer>> list = wordCount.collect();
for(Tuple2<String, Integer> t : list){
    System.out.println(t._1+"-"+t._2);
}

3.SparkSQL方式

第一步先切割词,不用转元组形式

JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>(){
    public Iterator<String> call(String str){
        String[] arr = str.split(" ");
        List<String> list = Arrays.asList(arr);
        return list.iterator();
    }
});
//把每个词转化为Row类型
JavaRDD<Row> wordRow = words.map(new Function<String, Row>(){
   public Row call(String s){
       return RowFactory.create(s);
   }
});
//下面需要构建结构化数据,用于sql语句的使用
//这里用的Spark2.0,是SparkSession和DataSet,之前版本的可能有些可以用SQLContext和DataFrame的替代
SparkSession ss = SparkSession.builder().config(conf).getOrCreate();
List<StructField> fields = new ArrayList<StructField>();
StructField f1 = DataTypes.createStructField("word", DataTypes.StringType, true);
fields.add(f1);
StructType st = DataTypes.createStructType(fields);
Dataset ds = ss.createDataFrame(wordRow, st);
ds.createOrReplaceTempView("allWord");
Dataset rst = ss.sql("select word, count(*) as count from allWord group by word");
List<Row> list = rst.collectAsList();
for(Row r : list){
    System.out.println(r.get(0)+"-"+r.get(1));
}
spark on hdfs spark处理hdfs上的文件简单的wordcount 进入spark/bin 目录 输入spark-shell  进入spark shell模式 阅读详情

相关推荐

【spark】spark集群的安装和spark shell测试wordcount

文章目录一、安装spark1、已解spark的压缩包2、进入~/spark/conf里配置spark-env.sh,改文件包含sark的各种运行环境3、配置slaves文件,同样复制一份 .template4、将配置好的spark分发给所有slave(这里也就是node01 node02)5、配置spark环境变量6、启动spark,停止spark7、看下work的状态8、通过web访问spark...

废物点心的博客 623

spark中迭代器的使用(求最大或最小)

groupbykey import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaSparkContext; import jersey.repackaged.com.google.common.collect.Lists; imp

m0_53291740的博客 1557

Spark 之WordCount

Spark 之WordCount

congge_study的博客 7390

RDD常用操作

RDD常用操作: 1、关键词分组之后展示(将>转化为) JavaPairRDD> productMap = ones.groupByKey(); List<Tuple2<String, String>> reslist = productMap.map(new Function>, Tuple2>() {                public Tuple2 call(Tup

xiaosongwahaha的博客 1503

手把手教你用TP4056和PMOS管搭建锂电池自动切换电路(含元器件选型指南)

本文详细介绍了如何使用TP4056和PMOS管搭建锂电池自动切换电路,包括核心架构设计、元器件选型指南和PCB布局优化。通过智能充电算法和电源路径切换模块,实现外部供电与锂电池的无缝切换,提升便携式设备的电源管理效率。

julia4scientist的博客 888

基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践指南

本文详细介绍了基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践方法。通过搭建仿真模型、设计扰动注入策略和FFT分析,精确提取阻抗特性,有效预测系统稳定性,为新能源并网系统设计提供可靠指导。

gold的博客 775

【笔记】java api spark 聚合函数aggregateByKey的参数说明及其用法

来做个分组统计关于aggregateByKey的用法和复杂参数记录 源码函数 <Integer> JavaPairRDD<String, Integer> org.apache.spark.api.java.JavaPairRDD.aggregateByKey(Integer zeroValue, Function2<Integer, Integer, Inte...

qq735679552的博客 1095

UOS的ARM机编译QT5.14.2记录

我需要的qt版本是Qt5.14.2,所以选择编译Qt5.14.2源码;几个月前尝试了编译一次,当时编译过程中出现了报错,当时时间很紧最后安装的默认版本来使用,最近有时间重新进行了一次编译,历经3个星期(4G的内存)终于解决了各种坑,编译成功了,现在将编译过程中遇见的一些坑记录一下,方便日后能记得这一次可恶的编译过程,如有描述欠缺的地方,还希望各位大佬给点意见指导指导🙏。

NiF693zzz的博客 1617

spark实现wordcount

创建spark上下文环境 def main(args: Array[String]): Unit = { val sc = new SparkContext(new SparkConf().setMaster("local[*]").setAppName("wc")) val rdd: RDD[String] = sc.makeRDD(List( "spark hello", "hive", "hadoop hbase", "spark ha

csncd的博客 4269

数字设计与计算机体系结构习题答案,数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdf...

数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdfDavid Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, © 2007 by Elsevier Inc.Exercise SolutionsC H A P T E R ...

weixin_39851408的博客 1785

Python自动化办公:5分钟搞定钉钉群文件自动发送(附完整代码)

本文详细介绍了如何利用Python实现钉钉群文件的自动化发送。通过结合钉钉企业内部应用与群机器人API,构建了包含智能令牌管理、文件上传与消息发送的完整工作流。文章提供了可直接复用的完整代码,并分享了定时任务、目录监听等进阶实战方案,帮助职场人士高效解决重复性文件发送难题,实现办公自动化。

7z8x2c4v6b9的博客 325

Spark---实现WordCount的11种方式

【代码】Spark---实现WordCount的11种方式。

大呱的博客 905

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

Spark的wordCount之java的写法

Spark-WordCount 之java写法 1.原始写法 package com.aura.spark.day01; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apac...

大数据容器 370

Qt C++ 电子海图与作战叠加(Overlay)系统

lab_pos->setText(QString("坐标: X%1 Y%2").arg(p.x(),0,'f',0).arg(p.y(),0,'f',0));lab_distance->setText(QString("距离: %1 海里").arg(dist,0,'f',1));lab_bearing->setText(QString("方位: %1°").arg(bear,0,'f',1));// 绘制S-57海图基底。scene->addText("封锁线").setPos(450,180);

寒寒豆豆软件公司的博客 496

rk3568 适配以太网(mac 2 mac)

MDIO(Management Data Input/Output)是一种管理数据输入/输出协议,用于在以太网交换机和PHY(物理层收发器)之间进行通信。在Android中,MDIO总线用于控制网络接口的PHY芯片,例如通过MDIO总线访问PHY芯片的寄存器。这些寄存器包含了一些关于网络连接状态、链路速度和其他计算机网络相关信息的数据。MDIO总线通常由网络接口控制器(NIC)使用,以便在OS中管理PHY芯片。在Android设备上,MDIO总线通常由内核驱动程序管理,并且可以通过 /sys/bus/mdi

weixin_35723192的博客 2453

spark中几种WordCount的写法

1 Spark Core import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object SparkCoreWordCount { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setMaster("local[2]") .setAppName(this.get

qq_36382679的博客 1881

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Windows环境下安装Spark并运行WordCount例子

Windows环境下安装Spark并运行WordCount例子一、Windows下安装Spark1、提前安装Java JDK2、提前安装Scala3、安装Spark4、安装Hadoop5、下载winutils(winutils.exe是在window系统上安装hadoop时所需要的winutils文件)6、运行spark-shell二、运行WordCount例子1、新建Project2、新建Scala Class3、导入Spark程序依赖的jar包4、编写WordCount代码 一、Windows下安装Sp

actionbean的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spark 实现 WordCount

本文介绍了怎么在windows上利用IDEA创建maven项目,通过Scala编程实现WordCount词频统计,并且打包上传到linux系统的Spark集群。看完这篇包教包会

lxh1741303098的博客 1534

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spark案例之WordCount

目录IntelliJ IDEA一、编写WordCount程序1.创建一个Maven项目WordCount并导入依赖2.编写代码3.打包插件4.创建数据,打包完,导入包5.集群测试(在包的路径下输入)hdfs的方式:本地方式:6.查看结果 二、远程调用Spark1.启动Spark下的start-all.sh Jps查看进程:2.导入依赖 3.编写代码4.打包5.在把代码加到创建sparkConf的后面原代码修改后,加上包的路径6.运行输出 2.编写代码 3.打包插件 4.创建数据,打包完,

m0_55834564的博客 1821

Spark实现WordCount

首先,编写第一个Spark应用程序 ,我们是如何建立起来的,其入口在哪里呢,需要创建两个对象。  一:val conf = new SparkConf()                             .setAppName("WordCount")                             .setMaster("local")     创建SparkConf对象...

春水初生,春林初盛,春风十里,不如随笔 9902

Spark初试之WordCount

本文详细记录了在Spark集群中的第一个程序:WordCount的编写、执行过程。

古月慕南的代码世界 1326

Spark练习之wordcount,基于排序机制的wordcount

Spark练习之wordcount一、原理及其剖析二、pom.xml三、使用Java进行spark的wordcount练习四、使用scala进行spark的wordcount练习 一、原理及其剖析 二、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO...

爱是与世界平行 1139

Spark WordCount

1. 启动hadoop和spark cd /usr/local/Cellar/hadoop/3.2.1/sbin ./start-all.sh cd /usr/local/Cellar/spark-3.0.0-preview2/sbin /start-all.sh 2. 引入依赖 依赖的版本号要与安装程序的版本号保持一致。 <dependency> <groupId&g...

人不风流枉少年 1715

Spark WordCount 案例

Spark WordCount 案例

m0_72168501的博客 2334

idea运行spark的wordcount与eclipse运行spark的wordcount示例,及本地运行sparkpi

一、idea运行wordcount 1、下载idea的社区版本(免费的) http://www.jetbrains.com/idea/download/ 2、安装scala插件 File-->Settings...----->Plugins 点击红色按钮,在搜索scala点击右面的初始化按钮安装scala插件 3、创建scala项目 File--->New Project

bahaidong的专栏 4618
上一篇: 机器学习中数据预处理方法
下一篇: Spark数据倾斜的原因以及解决方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值