【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)

23 篇文章 15 订阅
订阅专栏

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

一、RDD的创建

Spark可以从Hadoop支持的任何存储源中加载数据去创建RDD,包括本地文件系统和HDFS等文件系统。我们通过Spark中的SparkContext对象调用textFile()方法加载数据创建RDD。

1、从文件系统加载数据创建RDD

从运行结果反馈的信息可以看出,wordfile是一个String类型的RDD,或者以后可以简单称为RDD[String],也就是说,这个RDD[String]里面的元素都是String类型

scala> val test=sc.textFile("file:///export/data/test.txt")
test: org.apache.spark.rdd.RDD[String]=file:///export/data/test.txt MapPartitionsRDD[1] at textFile  at <console>:24

2、从HDFS中加载数据创建RDD

scala> val testRDD=sc.textFile("/data/test.txt")
testRDD:org.apache.spark.rdd.RDD[String]=/data/test.txt MapPartitionsRDD[1] at textFile at  <console>:24

上面两种创建RDD的方式是完全等价的,只不过使用了不同的目录形式

Spark可以通过并行集合创建RDD。即从一个已经存在的集合、数组上,通过SparkContext对象调用parallelize()方法创建RDD。

scala> val array=Array(1,2,3,4,5)
array: Array[Int]=Array(1,2,3,4,5)
scala> val arrRDD=sc.parallelize(array)
arrRDD: org.apache.spark.rdd.RDD[Int]=ParallelcollectionRDD[6] at parallelize at <console>:26

二、RDD的操作

Spark用Scala语言实现了RDD的API,程序开发者可以通过调用API对RDD进行操作处理。RDD经过一系列的“转换”操作,每一次转换都会产生不同的RDD,以供给下一次“转换”操作使用,直到最后一个RDD经过“行动”操作才会被真正计算处理,并输出到外部数据源中,若是中间的数据结果需要复用,则可以进行缓存处理,将数据缓存到内存中

1:转换算子

RDD处理过程中的“转换”操作主要用于根据已有RDD创建新的RDD,每一次通过Transformation算子计算后都会返回一个新RDD,供给下一个转换算子使用。直到最后一个RDD经过行动操作才会被真正计算处理,并输出外部数据源中,若是中间的数据结果需要复用,则可以进行缓存处理,将数据缓存到内存中

2:行动算子

行动算子主要是将在数据集上运行计算后的数值返回到驱动程序,从而触发真正的计算。

 三、词频统计实战

在Linux本地系统的根目录下,有一个words.txt文件,文件里有多行文本,每行文本都是由2个单词构成,且单词之间都是用空格分隔。现在,通过RDD统计每个单词出现的次数(即词频),具体操作过程如下图所示。

输出结果如下 

 四、倒排索引实战

下面我们用Spark的RDD操作实现倒排索引功能 具体操作步骤如下

1)利用IntelliJ IDEA新建一个maven工程

2)修改pom.XML添加相关依赖包

3)在工程名处点右键,选择Open Module Settings

4)配置Scala Sdk

5) 新建文件夹scala

6) 将文件夹设置成Sources Root

7) 新建scala类

程序输出结果如下

 代码如下

import org.apache.spark.sql.SparkSession

object InvertedIndex {
  def main(args: Array[String]): Unit = {
    //获取sparkSession对象
    val spark = SparkSession.builder().appName("InvertedIndex").master("local").getOrCreate()
    //读取目录
    val data = spark.sparkContext.wholeTextFiles("D:/file")
      data.foreach(println)

    val r1 = data.flatMap {
         x =>
           //使用分割"/''获取文件名
           val doc=x._1.split("/").last
           //先按行切分,在按列空格进行切分
           x._2.split("\r\n").flatMap(_.split(" ").map { y => (y, doc)})}
    r1.foreach(println)
    //按单词分组
    val result=r1.groupByKey.map{case(x,y)=>(x,y.toSet.mkString(":"))}
    result.foreach(println)
  }
}

创作不易 觉得有帮助请点赞关注收藏~~~

Spark学习笔记:索引分区映射
howard2005的专栏
03-28 1066
索引分区映射案例
使用Spark实现词频统计
梁辰兴的博客
04-26 3899
执行命令:spark-submit --master spark://master:7077 --deploy-mode cluster --class net.army.rdd.WordCount --driver-memory 512m --executor-memory 1g --executor-cores 2 hdfs://master:9000/park/SparkRDDWordCount.jar。hdfs://master:9000/wc/input:单词数据的来源路径。
Hadoop+Spark下的wordcount实验记录
weixin_43850920的博客
05-30 2183
大数据词频统计实验报告 文末github数据及代码,希望各位可以给我提一些建议,也可以对内容展开讨论。 目录 一、实验目标... 2 二、实验设计... 2 1.数据源... 2 2.实验内容... 2 3.代码模块设计... 3 三、实验流程... 3 1.本机配置信息... 3 2.配置过程的问题... 4 3.数据下载及上传... 4 4.spark配置及spark-shell启动... 5 ...
Spark RDD案例:词频统计
weixin_52112640的博客
06-15 1141
(二)创建日志属性文件 在资源文件夹里创建日指数型文件 - log4j.properties (三)创建词频统计单例对象 在net.huawei.rdd包里创建WordCount单例对象 查看结果
HADOOP集群大数据词频统计及设计比较(完整教程)
weixin_64420247的博客
08-29 7062
wordcount加了combiner的代码后,运行效率提高了。
Spark -- RDD简单操作【统计文本单行最大单词数】
热门推荐
Appleyk的专栏
10-18 10万+
  一 、什么是RDD ?            RDDSparkScala语言】,是一种数据结构【基于内存,可持久化】,就好比Java的ArrayList一样,可以进行各种的Action操作,比如Java的List集合,可以进行get【获取元素】、add【增加元素】、remove【移除元素】等操作;          当然,Scala语言底层实现是基于JVM的,即Scala兼容J...
Spark源码系列(二)RDD详解
01-30
上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。RDD的全名是ResilientDistributedDataset,意思是容错的分布式数据集,每一个RDD都会有5个...
java实现数据同步源码-BigData-In-Practice:大数据实践项目HadoopSpark、Kafka、Hbase、Flink
06-05
java实现数据同步源码 BigData-In-Practice 大数据项目仓库、涉及 HadoopSpark、Kafka、Hbase..... 等,更新... 综合实践项目 项目名 说明 使用 Spark SQL imooc 访问日志,数据清洗,统计,可视化 入门学习示例...
大数据课程的期末项目基于sparkhadoop hdfs、mongodb,使用scala,进行电影推荐+源代码+文档说明
最新发布
12-16
- MongoDB加载数据,利用sparkRdd统计热门电影、高分电影,统计分年月、分类别的热门、高分电影数据 - 基于ALS协同过滤算法,得到用户电影推荐和相似电影推荐 - 通过 TF-IDF 算法对标签的权重进行调,计算电影的...
Spark源码系列(六)Shuffle的过程解析
03-03
Spark操作模型是基于RDD的,当调用RDD的reduceByKey、groupByKey等类似的操作的时候,就需要有shuffle了。再拿出reduceByKey这个来讲。reduceByKey的时候,我们可以手动设定reduce的个数,如果不指定的话,就可能...
Spark从入门到精通
07-14
本课程主要讲解的内容包括:Scala编程、HadoopSpark集群搭建、Spark核心编程、Spark内核源码深度剖析、Spark性能调优、Spark SQL、Spark Streaming。 本课程的最大特色包括: 1、代码驱动讲解Spark的各个技术点...
简单SparkRDD单词计数操作
王文强的博客
05-14 7662
1 工具IDEA 2 添加jar依赖 3 spark的local模式 在自己电脑下创建文件: E://sparktext//text.txt然后写入: hadoop hbase hadoop hello world hive hive hello spark spark mapreduce 1 代码 import org.apache.spark.{SparkConf
Spark编程例题】单词计数与单词去重
天析的博客
05-24 507
使用Spark编程实现:(1)wordcount单词计数。
使用Scala编写了一个使用Spark框架实现词频统计的应用程序
db_wyt_2080的博客
11-21 513
大数据时代,处理海量文本数据是一项常见的任务。而词频统计作为文本处理的基础功能,对于分析文本内容和提取关键信息具有重要意义。本篇博客将介绍如何使用Scala编写一个简单的Spark应用程序,实现对文本数据的词频统计。通过并行化处理数据并利用Spark框架的强大功能,我们能够高效地进行大规模文本数据的处理和分析。.collect()这段代码利用了Spark框架的强大功能,通过并行化处理数据并使用一系列转换和操作,实现了对文本数据的词频统计
Spark入门--倒排索引
xuyaoqiaoyaoge的博客
07-31 4931
思路这个程序我可是花了3天才写起来的,主要是学习嘛,很多API不知道,一边查一边学喽。 首先读取文件夹里面的所有文件,将每个文件的内容按行拆分,然后再按单词拆分,组成(文件名,单词)对,然后再合并,最后得到我们的结果。
倒排索引
worn_xiao的博客
07-30 293
举例说明倒排索引: 如上图所示是一个文档列表,在这个文档列表我们可以看到如上所示的数据结构,pptid对象的是文档名称, keyword对应的是文档的属性值字段。在搜索过程我们要检索出含有it的问文档,正向检索工作量与索引空间 的消耗是巨大的,那么怎样才能解决这样的问题,介绍一个数据结构倒排索引倒排索引(inverted index),也常被称为反向索引、植入
基于RDDSpark应用程序开发(实现词频统计)
小财迷嘻嘻的博客
11-15 1748
1、开发环境 IDEA+MAVEN+Scala pom.xml 2、实现
Spark SQL使用StringIndexer和IndexToString来对字符串信息进行索引和反索引
_
10-12 3004
简介 本篇博客使用Kaggle上的AdultBase数据集:Machine-Learning-Databases 此数据集虽然历史比较悠久,但是数据格式比较容易处理,而且信息比较全面,适合数据处理入门。 本篇博客使用了Spark SQL的相关语句,实现了以下功能: 使用StringIndexer来对文本信息进行索引 使用IndexToString和StringIndexer的labels值来实现...
实战大数据(hadoop+spark+flink)pdf
09-18
实战大数据(hadoop spark flink)pdf是指利用大数据处理技术(如HadoopSpark、Flink)进行实际的数据分析和应用开发,并以PDF格式进行文档化。 大数据处理技术的出现,使得企业和机构可以处理和分析海量的数据,...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • python列表的三种遍历方法(for循环,索引,下标) 26608
  • 一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用) 15198
  • Java Web入门之Ajax的用法详解(附代码和实战) 15043
  • 【PyTorch深度强化学习】DDPG算法的讲解及实战(超详细 附源码) 10496
  • 【Python机器学习】卷积神经网络卷积层、池化层、Flatten层、批标准化层的讲解(图文解释) 10157

分类专栏

  • 机器学习 87篇
  • 深度强化学习 29篇
  • python 41篇
  • 人工智能安全 3篇
  • OpenCV 38篇
  • 深度学习 41篇
  • 考试复习 21篇
  • PyTorch基础 6篇
  • 考研数学 7篇
  • Transformer 4篇
  • 数据分析与可视化 39篇
  • 计算机视觉 23篇
  • Unity 3D 33篇
  • 数据挖掘 39篇
  • 大数据技术Hadoop+Spark 23篇
  • Spring Boot 31篇
  • 云计算与大数据技术 23篇
  • NLP自然语言处理 19篇
  • JAVA Web 34篇
  • python源码实例 16篇
  • java小项目 1篇
  • python经典一百题 1篇
  • C++ 17篇
  • python mysql database 2篇
  • python爬虫 2篇
  • JDBC opengauss 1篇
  • JDBC mysql opengauss 1篇

最新评论

  • 【数据分析与可视化】利用Python对学生成绩进行可视化分析实战(附源码)

    emmmmm666: 已关注点赞收藏,求源码,大佬。呜呜呜

  • 【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)

    2203_75308986: 已三连,求源码

  • 【Python机器学习】决策树、K近邻、神经网络等模型对Kaggle房价预测实战(附源码和数据集)

    bluesky1000000_: 已关注点赞收藏,求源代码

  • 【Unity 3D】3D游戏跑酷小子实战教学(附源码和步骤 超详细)

    ^_^160小土豆: 求源码和文件

  • python 实现k-means聚类算法 银行客户分组画像实战(超详细,附源码)

    lipqjsjiejeke: 已点赞加关注,求数据集!谢谢!1460333498@qq.com

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 软件测试主要考点梳理以及真题讲解(附答案)
  • 【深度学习基础】反向传播BP算法原理详解及实战演示(附源码)
  • PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
2023年203篇
2022年326篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司青岛百度关键词包年推广哪家好茂名网站关键词优化价格海南百度标王推荐荷坳阿里店铺托管哪家好大连优化价格南通优秀网站设计价格益阳外贸网站制作哪家好菏泽百度seo哪家好大丰网络营销多少钱成都网站推广工具公司济南百度竞价包年推广多少钱鸡西关键词按天扣费公司张北优秀网站设计报价柳州网站建设设计报价东营网站seo优化张家口SEO按效果付费报价张家界seo安顺网站制作推荐喀什营销网站公司柳州建网站公司坂田网络推广价格通辽外贸网站设计多少钱韶关seo推荐岳阳百度爱采购哪家好商洛SEO按天收费哪家好韶关营销型网站建设推荐河源企业网站制作价格清徐网站制作报价果洛关键词排名包年推广哪家好德州SEO按天扣费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化