Spark---RDD(双值类型转换算子)

文章目录

  • 1.RDD双值类型算子
      • [1.1 intersection](#1.1 intersection)
      • [1.2 union](#1.2 union)
      • [1.3 subtract](#1.3 subtract)
      • [1.4 zip](#1.4 zip)

1.RDD双值类型算子

RDD双Value算子就是对两个RDD进行操作或行动,生成一个新的RDD。

1.1 intersection

对源 RDD 和参数 RDD 求交集后返回一个新的 RDD

函数定义:

def intersection(other: RDD[T]): RDD[T]

复制代码
    //建立与Spark框架的连接
    val rdd = new SparkConf().setMaster("local[*]").setAppName("RDD") //配置文件
    val sparkRdd = new SparkContext(rdd) //读取配置文件

    val data1: RDD[Int] = sparkRdd.makeRDD(List(1, 2, 3, 4))
    val data2: RDD[Int] = sparkRdd.makeRDD(List(3, 4, 5, 6))
    val dataRdd = data1.intersection(data2)
    dataRdd.collect().foreach(println)

    sparkRdd.stop(); //关闭连接

运行结果:

1.2 union

对源 RDD 和参数 RDD 求并集后返回一个新的 RDD

函数定义:

def union(other: RDD[T]): RDD[T]

复制代码
    val data1: RDD[Int] = sparkRdd.makeRDD(List(1, 2, 3, 4))
    val data2: RDD[Int] = sparkRdd.makeRDD(List(3, 4, 5, 6))
    val dataRdd = data1.union(data2)
    dataRdd.collect().foreach(println)

1.3 subtract

以一个 RDD 元素为主,去除两个 RDD 中重复元素,将其他元素保留下来。求差集

函数定义:

def subtract(other: RDD[T]): RDD[T]

复制代码
    val data1: RDD[Int] = sparkRdd.makeRDD(List(1, 2, 3, 4))
    val data2: RDD[Int] = sparkRdd.makeRDD(List(3, 4, 5, 6))
    val dataRdd = data1.subtract(data2)
    dataRdd.collect().foreach(println)

1.4 zip

将两个 RDD 中的元素,以键值对的形式进行合并。其中,键值对中的 Key 为第 1 个 RDD中的元素,Value 为第 2 个 RDD 中的相同位置的元素。

函数定义:

def zip[U: ClassTag](other: RDD[U]): RDD[(T, U)]

复制代码
    val data1: RDD[Int] = sparkRdd.makeRDD(List(1, 2, 3, 4))
    val data2: RDD[Int] = sparkRdd.makeRDD(List(5,6,7,8))
    val dataRdd = data1.zip(data2)
    dataRdd.collect().foreach(println)


注意:如果两个RDD类型不一样,则会报错

复制代码
    val data1: RDD[Int] = sparkRdd.makeRDD(List(1, 2, 3, 4))
    val data2: RDD[Int] = sparkRdd.makeRDD(List("hello", "scala", "hello", "Java"))
    val dataRdd = data1.zip(data2)
    dataRdd.collect().foreach(println)
相关推荐
疯狂吧小飞牛6 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈6 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hjxu20167 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
藦卡机器人7 小时前
中国工业机器人发展现状
大数据·人工智能·机器人
Simon_lca8 小时前
突破合规瓶颈:ZDHC Supplier to Zero(工厂零排放 - 进阶型)体系全攻略
大数据·网络·人工智能·分类·数据挖掘·数据分析·零售
Sylvia-girl8 小时前
Linux下的基本指令1
linux·运维·服务器
斯班奇的好朋友阿法法9 小时前
在企业的离线内网环境的服务器部署openclaw和大模型
服务器·语言模型
黄焖鸡能干四碗9 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
天赐学c语言10 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
hzhsec10 小时前
MSF-CobaltStrike实现内网socks代理转发上线
服务器·网络·安全·网络安全