Spark基本函数操作实例

本文通过实战演示了Spark中常用的基本函数,包括map、filter、count、wordcount等,并展示了如何利用这些函数处理数据集。

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

这是编写spark程序的一些常用的基本函数

接下来我将会通过编写代码来使用这些函数

package com.zlf.spark

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
/**
 * spark 基本函数操作实例
 */
object FunctionTest {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setAppName("FunctionTest").setMaster("local");
    val sc=new SparkContext(conf);
    var rdd =sc.parallelize(List(1,2,3,4,5,6));
    println("map函数测试=================");
    val mapRdd=rdd.map { x => x*2 };// 或者写成  rdd.map(_*2)
    mapRdd.collect().foreach(println);//控制台输出
      println("filter函数测试=================");
    val filterRdd=mapRdd.filter(_>5);
    filterRdd.collect().foreach(println);

     println("count cache函数测试=================");
     var textrdd=sc.textFile("src/count.txt");
     var count=textrdd.count();
     println(count);
     textrdd.cache(); 
    count= textrdd.count();
     println(count);
     println("wordcount函数测试=================");
     //把每一行进行根据空格分割,然后flatMap会把多个list合并成一个list,最后把每个元素变成一个元组
     //然后把具有相同key的元素的value进行相加操作,参考上面图片中的函数定义,针对reduceByKey,
     //传入的函数是对value进行操作的
     val wordcount=textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
     wordcount.collect().foreach(println);

     //其实完成了一个sort by value的过程, sortByKey(false),表示倒序排列
     val wordcount2 =textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))
//     val wordcount2 =textrdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x => (x._2, x._1)).sortByKey(false).map(x => (x._2, x._1))
      wordcount2.collect().foreach(println);
     println("union函数测试=================");
      val rdd1=sc.parallelize(List(('a',1),('a',2),('b',4)))     
      val rdd2=sc.parallelize(List(('b',1),('b',2),('a',4)))
      val result_union=rdd1 union rdd2;
      //结果是把两个list合并成一个,List(('a',1),(‘a’, 2),('b',4),(‘b’, 1),('b',2),('a',4))
      result_union.collect().foreach(println); 
        println("join函数测试=================");
       val result_join=rdd1 join rdd2;
       //结果是把两个list做笛卡尔积,Array((a,(1,4)),(a,(2,4)),(b,(4,1)),(b,(4,2)))
       result_join.collect().foreach(println); 
      val rdd_add=rdd.reduce(_+_);
      println(rdd_add); 
      val rdd_seq=result_union.lookup('a');
      println(rdd_seq);//返回 WrappedArray(1, 2, 4)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值