题目
1.使用Spark完成单词去重
text02.txt的数据
java php hello word
phpp hi exe java
python hello kitty
php happy abc java
2.使用Spark统计133 136 139开头的总流量
13326293050 81
13626594101 50
13326435696 30
13926265119 40
13326564191 2106
13626544191 1432
13919199499 300
3.完成统计相同字母组成的单词
text01.txt的数数据
abc acb java
avaj bac
cba abc
jvaa php hpp
pph python thonpy
第一题:
解题思路
//导入库:导入了 org.apache.spark.{SparkConf, SparkContext}库,这些是Spark应用程序所需的关键库。
//定义对象:定义了一个名为 WordDistinct的Scala对象。
//main方法:在 main方法中开始了应用程序的入口。创建了SparkConf并设置了应用程序的名称为"WordDistinct",指定了本地模式来运行Spark。
//读取文件:使用 sc.textFile("file:///C:/Users/用户名/Desktop/text02.txt")读取本地文件系统中的"text02.txt"文件,将内容加载为一个RDD(弹性分布式数据集)。
//处理数据:通过 flatMap将每一行按空格切分成单词,然后通过 distinct()方法对所有单词去重,得到独一无二的单词集合。
//输出结果:最后通过 collect().foreach(println)将去重后的单词集合打印输出。
代码
package lianxi
import org.apache.spark.{SparkConf, SparkContext}
object WordDistinct {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("WordDistinct").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("file:///C:\\Users\\Administrator\\Desktop\\text02.txt")
val words = lines.flatMap(line => line.split(" "))
val uniqueWords = words.distinct()
uniqueWords.collect().foreach(println)
}
}
//导入库:导入了 org.apache.spark.{SparkConf, SparkContext}库,这些是Spark应用程序所需的关键库。
//定义对象:定义了一个名为 WordDistinct的Scala对象。
//main方法:在 main方法中开始了应用程序的入口。创建了SparkConf并设置了应用程序的名称为"WordDistinct",指定了本地模式来运行Spark。
//读取文件:使用 sc.textFile("file:///C:/Users/用户名/Desktop/text02.txt")读取本地文件系统中的"text02.txt"文件,将内容加载为一个RDD(弹性分布式数据集)。
//处理数据:通过 flatMap将每一行按空格切分成单词,然后通过 distinct()方法对所有单词去重,得到独一无二的单词集合。
//输出结果:最后通过 collect().foreach(println)将去重后的单词集合打印输出。
运行结果
第二题
解题思路
//定义对象:定义了一个名为 TrafficCount的Scala对象,用于统计以133、136和139开头号码的总流量。
//
//main方法:在 main方法中创建了新的SparkContext。设置应用程序名称为"TrafficCount",指定了本地模式运行Spark。
//
//构造数据:通过 sc.parallelize(List(...))构造了一个由手机号和流量组成的数据集合,手机号以133、136或139开头。
//
//数据处理:过滤出以133、136或139开头的手机号,并从中提取流量值,最后通过 sum()方法对流量值求和。
//
//输出结果:将统计的总流量值打印输出。
代码
package lianxi
import org.apache.spark.{SparkConf, SparkContext}
object TrafficCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("TrafficCount").setMaster("local")
val sc = new SparkContext(conf)
val data = sc.parallelize(List(
("13326293050", 81),
("13626594101", 50),
("13326435696", 30),
("13926265119", 40),
("13326564191", 2106),
("13626544191", 1432),
("13919199499", 300)
))
val traffic = data.filter { case (number, _) => number.startsWith("133") || number.startsWith("136") || number.startsWith("139") }
.map { case (_, value) => value }
.sum()
println(traffic)
}
}
//定义对象:定义了一个名为 TrafficCount的Scala对象,用于统计以133、136和139开头号码的总流量。
//
//main方法:在 main方法中创建了新的SparkContext。设置应用程序名称为"TrafficCount",指定了本地模式运行Spark。
//
//构造数据:通过 sc.parallelize(List(...))构造了一个由手机号和流量组成的数据集合,手机号以133、136或139开头。
//
//数据处理:过滤出以133、136或139开头的手机号,并从中提取流量值,最后通过 sum()方法对流量值求和。
//
//输出结果:将统计的总流量值打印输出。
运行结果
第三题
解题思路
//定义对象:定义了一个名为 AnagramCount的Scala对象,用于统计相同字母组成的单词。
//
//main方法:在 main方法中创建了新的SparkContext。设置应用程序名称为"AnagramCount",指定了本地模式运行Spark。
//
//读取文件:使用 sc.textFile("file:///C:/Users/用户名/Desktop/text01.txt")读取本地文件系统中的"text01.txt"文件,加载为RDD。
//
//处理数据:将每行文本按空格切分成单词,然后对每个单词进行转换为小写并按字符顺序排序,形成一个元组 (排序后的单词, 1)。
//
//统计:使用 reduceByKey(_ + _)对相同单词进行统计,统计出现次数。
//
//输出结果:通过 collect().foreach(println)打印出每个单词的字母排序及其出现次数。
代码
package lianxi
import org.apache.spark.{SparkConf, SparkContext}
object AnagramCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("AnagramCount").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("file:///C:\\Users\\Administrator\\Desktop\\text01.txt")
val words = lines.flatMap(line => line.split(" "))
val anagrams = words.map(word => (word.toLowerCase.sorted, 1))
.reduceByKey(_ + _)
anagrams.collect().foreach(println)
}
}
//定义对象:定义了一个名为 AnagramCount的Scala对象,用于统计相同字母组成的单词。
//
//main方法:在 main方法中创建了新的SparkContext。设置应用程序名称为"AnagramCount",指定了本地模式运行Spark。
//
//读取文件:使用 sc.textFile("file:///C:/Users/用户名/Desktop/text01.txt")读取本地文件系统中的"text01.txt"文件,加载为RDD。
//
//处理数据:将每行文本按空格切分成单词,然后对每个单词进行转换为小写并按字符顺序排序,形成一个元组 (排序后的单词, 1)。
//
//统计:使用 reduceByKey(_ + _)对相同单词进行统计,统计出现次数。
//
//输出结果:通过 collect().foreach(println)打印出每个单词的字母排序及其出现次数。
运行结果
版权归原作者 xidiexi 所有, 如有侵权,请联系我们删除。