spark的练习题(6)

这篇博客介绍了Apache Spark在实际问题中的应用,包括:1) 对文件内容进行排序;2) 计算键值对的平均值;3) 实现二次排序;4) 求取Top N支付金额;5) 单表关联查询;6) 降水量数据的处理和分析。通过这些实例,展示了Spark在数据处理中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.排序:
       定义三个文件对文件内容进行排序(数字)

package com.hyxy.spark01

import org.apache.spark.{SparkConf, SparkContext}

object listarray {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("sort").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd = sc.textFile("D://123//sort.txt")
      rdd.sortBy(x =>x,true)
      .repartition(1)
      .foreach(println)

  }
}
//val data = sc.textFile(dataFile,3)
//var index = 0
//val result = data.filter(_.trim().length>0).map(n=>(n.trim.toInt,""))
//  .partitionBy(new HashPartitioner(1))
//  .sortByKey()
//  .map(t=>{index += 1;(index,t._1)})
//result.saveAsTextFile("file:///D:/测试数据/排序/result")
//}

 

2.题目:给定一组键值对("spark",2),("hadoop",6),("hadoop",4),("spark",6),键值对的key
            表示图书名称,value表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。
 

package com.hyxy.spark01

import org.apache.spark.{SparkConf, SparkContext}

object pingjunzhi {
  def main(args: Array[String]): Unit = {
//    给定一组键值对("spark",2),("hadoop",6),("hadoop",4),("spark",6),键值对的key
//    表示图书名称,value表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。
    val conf = new SparkConf().setMaster("local[2]").setAppName("平均销量")
    val sc = new SparkContext(conf)
    val rdd = sc.parallelize(Array(("spark",2),("hadoop",6),("hadoop",4),("spark",6),("spark",2)))//parallelize是创建rdd的
    rdd.mapValues(x => (x,1))//("spark",(2,1))
      .reduceByKey((x,y)=> (x._1+y._1,x._2+y._2))//("spark",(8,2))
      .mapValues(x => (x._1 / x._2)).foreach(println)//("spark",4)


  }
}

   

   
3.二次排序
    题目:要求先按账户排序,在按金额排序
    hadoop@apache          200
    hive@apache       &n

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值