Spark练习综测

本文展示了如何使用ApacheSpark在Java和Python中执行三个不同的文本处理任务:从文件中去除重复单词、统计特定起始数字的流量总量以及计算由相同字母组成的单词。
摘要由CSDN通过智能技术生成

 

1.使用Spark完成单词去重 

text02.txt的数据

java php hello word

phpp hi exe java 

python hello kitty

php happy abc java

​
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)
  }
}

​

 

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

13326293050 81

13626594101  50

13326435696  30

13926265119  40

13326564191  2106

13626544191  1432

13919199499  300 

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)
  }
}

 

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

text01.txt的数数据

abc acb java

avaj bac

cba abc

jvaa php hpp

pph python thonpy
 

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)
  }
}

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值