Spark之常用的RDD操作

给大家分享我常用的RDD操作方法。版本是spark-2.4.0,使用的python(不同的语言RDD的用法差不多)

一,创建

  • 从本地文件获取
lines = sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt")
  • 从HDFS中获取
lines = sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt")
  • 从kafka中获取
from pyspark.streaming.kafka import KafkaUtils
brokers = "你的节点“
topic = ”topicname“
ssc = StreamingContext(sc, 30)
# 这个30 是执行频率,30秒一次
Streams = KafkaUtils.createDirectStream(ssc, [topic], kafkaParams={"metadata.broker.list": brokers})
  • 从集合中获取
nums = [1,2,3,4,5]
rdd = sc.parallelize(nums)

二,转换

通过进来的数据,都是一些原始数据,我们需要通过一些特定的函数进行一些预处理。

  • filter(func):基本用于一些过滤操作,筛选出满足函数func的元素,并返回一个新的数据集
  • map(func):有状态的修改RDD的每个数据,将每个元素传递到函数func中,并将结果返回为一个新的数据集
  • flatMap(func):与map()相似,但每个输入元素都可以映射到0或多个输出结果
  • groupByKey():应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集
  • reduceByKey(func):应用于(K,V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中的每个值是将每个key传递到函数func中进行聚合的方式,常见的有相加,或者拼接,也可以用于做比较判断等。

这里的func 指的是一个方法。一般都是直接通过lambda 函数 完成

三,执行

行动操作是真正触发计算的地方。Spark程序执行到行动操作时,才会执行真正的计算,从文件中加载数据,完成一次又一次转换操作,最终,完成行动操作得到结果。

  • count() 返回数据集中的元素个数
  • collect() 以数组的形式返回数据集中的所有元素
  • first() 返回数据集中的第一个元素
  • take(n) 以数组的形式返回数据集中的前n个元素
  • reduce(func) 聚合函数, 通过函数func(输入两个参数并返回一个值)聚合数据集中的元素
  • foreach(func) 遍历函数, 将数据集中的每个元素传递到函数func中运行*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值