Spark RDD方法实操

文章介绍了使用ApacheSpark进行数据处理,包括创建RDD、合并、过滤、去重、统计和数据清洗等操作。展示了如何使用`SparkConf`和`SparkContext`进行配置,以及`rdd1`,`rdd2`的合并、`reduceByKey()`、`groupByKey()`、`textFile()`和数据筛选等技术应用。
摘要由CSDN通过智能技术生成

package com.tipdm.sparkDemo
import org.apache.spark.{SparkConf, SparkContext}
object a1 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd1 = sc.parallelize(List(('a',1),('b',99),('c',100),('d',101)))
    val rdd2 = sc.parallelize(List(('e',120),('f',150)))
    val rdd3 = rdd1.union(rdd2)
    rdd3.filter(_._2 >= 100).collect
    rdd3.filter(x => x._2 >= 100).collect.foreach(println)
    val rdd4 = sc.parallelize(List(('a',1),('b',99),('c',100),('d',101),('c',100)))
    rdd4.filter(_._2 >= 100).collect
    val rdd5 = rdd4.distinct()
    rdd5.filter(x => x._2 >= 100).collect.foreach(println)
  }
}

创建rdd1与rdd2,用union()方法合并rdd1与rdd2放在rdd3中

对rdd3进行filter()方法过滤,去除100以下的数据

创建rdd4,先用filter()方法过滤去除100以下的数据,再用distinct()方法去重输出

package com.tipdm.sparkDemo
import org.apache.spark.{SparkConf, SparkContext}

object a2 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd1 = sc.parallelize(List(1,2,3))
    val rdd2 = sc.parallelize(List(3,4,5,6))
    val rdd3 = sc.parallelize(List('a','b','c'))
    val rdd4 = rdd1.union(rdd2)
    val rdd5 = rdd4.filter(_ >= 3)
    val rdd6 = rdd5.distinct()
    rdd6.cartesian(rdd3).collect.foreach(println)
  }
}

创建rdd1与rdd2,用union()方法合并rdd1与rdd2放在rdd4中

创建rdd5,用filter()方法过滤去除3以下的数据

创建rdd6,先用distinct()方法去重,再用cartesian()方法输出笛卡尔积

package com.tipdm.sparkDemo
import org.apache.spark.{SparkConf, SparkContext}

object a4 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd1 = sc.parallelize(
      List(('a',1),('a',2),('b',1),('c',1),('c',1))
    )
    val re_rdd1 = rdd1.reduceByKey((a,b) => a+b)
    re_rdd1.collect.foreach(println)
    val g_rdd1 = rdd1.groupByKey()
    g_rdd1.collect.foreach(println)
    g_rdd1.map(x => (x._1, x._2.size)).collect.foreach(println)
  }
}

创建re_rdd1,用reduceByKey()方法合并统计键相同的值,将值相加输出

创建g_rdd1,用groupByKey()方法对具有相同的值进行分组,将相同键的值的数量输出

package com.tipdm.sparkDemo
import org.apache.spark.{SparkConf, SparkContext}
object a3 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc = new SparkContext(conf)
    val first_half = sc.textFile("D:\\Employee_salary_first_half.csv")
    val second_half = sc.textFile("D:\\Employee_salary_first_half.csv")
    val drop_first = first_half.mapPartitionsWithIndex((ix ,it) => {
      if (ix == 0) it.drop(1)
      it
    })
    val drop_second = second_half.mapPartitionsWithIndex((ix, it) => {
      if (ix == 0) it.drop(1)
      it
    })
    val split_first = drop_first.map(
      line => {val data = line.split(",");(data(1), data(6).toInt)}
    )
    val split_second = drop_second.map(
      line => {val data = line.split(",");(data(1), data(6).toInt)}
    )
    val filter_first = split_first.filter(x => x._2 > 200000).map(x => x._1)
    val filter_second = split_second.filter(x => x._2 > 200000).map(x => x._1)
    val name = filter_first.union(filter_second).distinct()
    name.collect.foreach(println)
  }
}

用textFile()方法将文件内容创建为rdd

用map方法加入逗号

用filter方法过滤小于20万的员工

用distinct()方法去重

最后输出结果

  • 24
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值