spark综测

目录

题目

1.使用Spark完成单词去重

2.使用Spark统计133 136 139开头的总流量

3.完成统计相同字母组成的单词

第一题:

解题思路

代码

运行结果

第二题

解题思路

代码

运行结果

第三题

解题思路

代码

运行结果


 

题目

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)​打印出每个单词的字母排序及其出现次数。
运行结果

 

 

 

 

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值