Scala配置和Spark配置以及Scala一些函数的用法(附带词频统计实例)
创始人
2024-02-17 06:38:39
0

文章目录

  • 配置Spark
  • 配置Scala
  • 生成RDD
  • filter过滤器
  • map方法
  • flatMap方法
  • reduceByKey
  • spark下wordcount程序
  • 参考

先给出spark和Scala的下载地址,这是我用的版本
https://pan.baidu.com/s/1rcG1xckk3zmp9BLmf74hsg?pwd=1111
也可以自己去官网下载。

配置Spark

解压文件到software文件夹中

tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz 

验证:进入spark软件目录下的bin:执行./spark-shell
在这里插入图片描述
在家目录下,编辑.bashrc,添加如下内容:

export SPARK_HOME=/home/bigdata3/software/spark-3.1.2-bin-hadoop3.2/
export PATH=$SPARK_HOME/bin:$PATH

保存退出后,重开一个终端,直接执行:spark-shell
在这里插入图片描述
配置成功

配置Scala

下载,解压缩,编辑.bashrc,添加如下内容:

export SCALA_HOME=/home/bigdata3/software/scala-2.12.15
export PATH=$SCALA_HOME/bin:$PATH

保存退出后,重开一个终端,直接执行:scale
在这里插入图片描述
配置成功

生成RDD

1)从本地文本文件生成RDD
命令:textFile(URI)
例如:

val myRdd=sc.textFile("file:///home/bigdata3/Desktop/a1.txt")
//                        协议       路径
myRdd.collect()

在这里插入图片描述

2)从hdfs文本文件生成RDD

val hdfsRdd=sc.textFile("hdfs://172.21.6.156:9000/0126/a.txt")//namenode       路径
hdfsRdd.collect()

在这里插入图片描述

filter过滤器

Rdd数据过滤:

object spark1 {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")val sc = new SparkContext(conf)val myRdd = sc.textFile("file:///home/bigdata3/Desktop/a1.txt")val filterRdd = myRdd.filter(x=>x.contains("AABB"))val out1 = filterRdd.collect()out1.foreach(println)Thread.sleep(1000 * 60 * 5)}
}

这样能够对文件的内容进行过滤,只输出含有“AABB”的内容。

map方法

将Rdd中的每个元素,送入到参数function处理。
使用map将文本文件中的每个单词分开,效果不理想。
在这里插入图片描述
因为当分词后,会自动生成一个array,不方便后续解析。

flatMap方法

使用flatMap将文本文件中的每个单词分开:
在这里插入图片描述

reduceByKey

将(k, v)对按照参数函数进行处理

spark下wordcount程序

分词,构造键值对(词,1),键值对相加
(a, 1)+ (a, 1) = (a, 2)

程序:非链式写法:

  def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")val sc = new SparkContext(conf)val myRdd = sc.textFile("file:///home/bigdata3/Desktop/a1.txt", 3) //定义Rddval flatmap1 = myRdd.flatMap(_.split(" ")) //按空格分词val mapKV = flatmap1.map((_ ,1))// 创建键值对val reduce1 = mapKV.reduceByKey(_+_) //将相同键值的键值对相加reduce1.foreach(println) //输出Thread.sleep(1000 * 60 * 5)}

程序:链式写法:

  def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")val sc = new SparkContext(conf)sc.textFile("file:///home/bigdata3/Desktop/a1.txt", 3).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println)Thread.sleep(1000 * 60 * 5)}

可以想想,如果用java来写,得多麻烦,所以Scala确实轻巧很多。

参考

大数据课的笔记。

相关内容

热门资讯

两高典型案例:行政公益诉讼督促... 法检机关以行政公益诉讼促进妇女平等就业权益保障。 12月22日,最高人民法院、最高人民检察院联合发布...
最高法:行政公益诉讼的案件领域... 12月22日,最高人民法院举行新闻发布会,发布第三批行政公益诉讼典型案例。 本次发布的典型案例,涵盖...
新华社消息|托育服务法草案等一... 记者:董博婷、范思翔、赵博 编导:沈倩 新华社国内部 新华社音视频部 联合制作
国家医保局:“十五五”时期长期... 在2025全国长期护理保险高质量发展大会上,国家医保局党组书记、局长章轲在致辞时表示,经过试点,长期...
森远股份:将通过完善经营管理制... 有投资者在互动平台向森远股份提问:“公司好不容易扭亏为盈 但是已经很久没有分红了 考虑进行分红吗今年...
十年来全国检察机关共办理公益诉... 新华社北京12月22日电(记者冯家顺)2015年7月至2025年9月,全国检察机关共办理公益诉讼案件...
广告语被指“大字吹牛” 公牛集... 近期,插线板行业龙头公牛集团因常年沿用的一句“10户中国家庭,7户用公牛”广告语与中山市家的电器有限...
最高法:行政公益诉讼判决确认行... 行政公益诉讼案量呈现领域集中、地域差异等特征,判决确认行政行为违法、撤销违法行政行为等案件比例较高。...
欧盟发布新玩具安全法规! 2025年12月12日,欧盟在其官方公报(OJ)发布了玩具安全法规(EU) 2025/2509(TS...
祁连山下筑“法桥”:甘肃省肃南... 地处河西走廊中部、祁连山北麓的甘肃张掖市肃南裕固族自治县,地域辽阔,牧区、工矿企业分布分散,职工群众...