SparkCore知识点及部分算子

Spark中最基本的数据抽象是RDD。
RDD(Resilient Distributed Dataset) 为弹性分布式数据集。

RDD 的特性

  1. 一组分区
  2. 对于每个切片(分区),有一个计算函数
  3. 与其它RDD的依赖关系
  4. 分区器 K-V
  5. 优先计算位置

创建RDD的方式

创建RDD的方式有三种

  1. 集合中创建
  2. 外部存储系统的数据集创建
  3. 其它RDD创建

集合中创建

Spark主要提供了两种函数parallelize 和 makeRDD

    val value: RDD[Int] = sc.parallelize(List(1,2,3,4))
    val value1: RDD[Int] = sc.makeRDD(List(1,2,3,4))

外部存储系统的数据集创建

    //从外部存储系统获取RDD
    val value: RDD[String] = sc.textFile("E:\\Dashuju\\hadoop\\SparkCore0821\\input\\1.txt")
    value.collect().foreach(println)

    //从hdfs获取rdd
    val value1: RDD[String] = sc.textFile("hdfs://hadoop102:8020/input")
    value1.collect().foreach(println)

从其它RDD创建

        val mapRdd: RDD[Int] = rdd.map(_ * 2)

Spark 算子

Trasformation

map() 映射

mapPartitions() 以分区为单位进行map

mapPartitionsWithIndex() 带分区号,执行mapPartitions

flatMap() 扁平化 与map操作类似,区别是函数返回值为一个集合,并且将每一个该集合的元素拆分出来放到新的RDD中。数据一进,迭代器出。

glom() 将RDD的每一个分区转换为数组

groupBy() 分组 按照传入函数规则分组,存在shuffle过程。

filter() 过滤 接收一个返回值为布尔类型的函数为参数。过滤出为true的值放入新的RDD中。可能产生数据倾斜。不影响分区。

sample() 采样
不放回取样模型-伯努利算法 sample(false,0~1,seed)
放回取样模型-泊松算法 sample(true,2,seed)

distinct去重 对元素内部去重

coalesce() 合并分区 默认不走shuffle,也可以设置参数true,执行shuffle
repartition重新分区 走shuffle
sorBy() 排序默认正序排序
pipe() 调用脚本

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值