Spark核心概念 – Transformation和Action

• Transformation是懒操作,用于定义新的 RDD;而Action启动计算操作,并向用户程序返回值或向外部存储写数据。
Transformation有如下几种:
map(f: T => U): RDD[T] => RDD [U] 转换格式
filter(f: T => Bool): RDD[T] => RDD[T] 过滤
flatMap(f: T => Seq[U]): RDD[T] => RDD[U] 可迭代类型先映射后扁平化

groupByKey(): RDD[(K, V)] => RDD[(K, Seq[V])] 分组操作 可以查看相同的
reduceByKey(f: (K,V) => V): RDD[(K, V)] => RDD[(K, V)] 计算成key value格式
union(): (RDD[T],RDD[T]) => RDD[T] 合并在一起
join(): (RDD[(K, V)],RDD[(K, W)]) => RDD[(K, (V, W))] 关联相同Key
mapValues(f: V => W): RDD[(K, V)] => RDD[(K, W)]
partitionBy(p: Partitioner[K]): RDD[(K, V)] => RDD[(K,V)]

• Map(func)
返回一个新的分布式数据集,由每个原元素经过func函数转换后组成。
• Filter(func)
返回一个新的数据集,由经过func函数后返回值为true的原元素组成。
• flatMap(func)
类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)。
• union(otherDataset)
返回一个新的数据集,由原数据集和参数联合而成。
• join(otherDataset,[num Tasks])
在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个Key中所有元素都在一起的数据集。
• mapValues()
在类型为(K,V)的数据集上,对v进行处理
• partitionBy(Partitioner)
指定自定义的分区规则
• Action有如下几种:
count(): RDD[T] => Long
collect(): RDD[T] => Seq[T]
reduce( f: (T, T) => T): RDD[T] => T
lookup(k: K): RDD[(K, V)] => Seq[V]
• reduce(func)
通过函数func聚集数据集中的所有元素。Func函数接受2个参数,返回一个值。这个函数必须是关联性的,确保可以被正确的并发执行。
• collect()
在Driver的程序中,以数组的形式,返回数据集的所有元素。这通常会在使用filter或者其它操作后,返回一个足够小的数据子集再使用,直接将整个RDD集Collect返回,很可能会让Driver程序OOM。
• count ()
返回数据集的元素个数。
• take()
返回一个数组,由数据集的前n个元素组成。注意,这个操作目前并非在多个节点上,并行执行,而是Driver程序所在机器,单机计算所有的元素(Gateway的内存压力会增大,需要谨慎使用)。
• first()
返回数据集的第一个元素(类似于take(1))。
• saveAsTextFile(path)
将数据集的元素,以textfile的形式,保存到本地文件系统,hdfs或者任何其它hadoop支持的文件系统。Spark将会调用每个元素的toString方法,并将它转换为文件中的一行文本。
• saveAsSequenceFile path()
将数据集的元素,以sequencefile的格式,保存到指定的目录下,本地系统,hdfs或者任何其它hadoop支持的文件系统。RDD的元素必须由key-value对组成,并都实现了Hadoop的Writable接口,或隐式可以转换为Writable(Spark包括了基本类型的转换,例如Int,Double,String等等)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值