pyspark:RDD:filter,map,flatMap

RDD的构建方式一:textFile()

        其中的word.txt文件为:

                Hadoop is good
                Spark is good
                Spark is better

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext("local")
spark = SparkSession(sc)
lines = sc.textFile("/root/pythonlearn/word.txt")

filter(过滤):

linesresult = lines.filter(lambda lines:"Spark" in lines)
linesresult.foreach(print)

在代码中出现并未打印结果的情况,但在终端的交互式环境中可以输出结果 

也可以采用第二种方式输出结果:

linesresult.collect()

结果如下(后续文章均使用collect()输出):

['Spark is good', 'Spark is better']

map(映射):

linesresult = lines.map(lambda lines:lines.split(" "))
linesresult.foreach(print)
linesresult.collect()

结果:

[['Hadoop', 'is', 'good'], ['Spark', 'is', 'good'], ['Spark', 'is', 'better']]

flatMap()与map()相似。先执行map映射操作,再执行flat扁平化操作:

linesresult = lines.flatMap(lambda lines:lines.split(" "))
linesresult.foreach(print)
linesresult.collect()

结果:

['Hadoop', 'is', 'good', 'Spark', 'is', 'good', 'Spark', 'is', 'better']

 RDD的构建方式二:parallelize()

# %%
rdd = sc.parallelize([2, 3, 4])
print(sorted(rdd.flatMap(lambda x: range(1, x)).collect()))
print(sorted(rdd.map(lambda x: [(x, x), (x, x)]).collect()))
print(sorted(rdd.flatMap(lambda x: [(x, x), (x, x)]).collect()))

运行结果:

[1, 1, 1, 2, 2, 3]
[[(2, 2), (2, 2)], [(3, 3), (3, 3)], [(4, 4), (4, 4)]]
[(2, 2), (2, 2), (3, 3), (3, 3), (4, 4), (4, 4)]

pyspark依赖于spark,而spark由scala语言开发,scala的底层是java

在pyspark的配置中需要:

        1.python解释器,最好是3.6版本及以下,并配置环境变量

        2.java,jdk最好是1.8版本,并配置环境变量

        3.scala环境,并配置环境变量

        4.Hadoop,并配置环境变量

        5.spark(spark中内置有pyspark),并配置环境变量

        6.python的pyspark库

在scala中map,filter,flatmap详细如下:

Scala_函数式编程以及简单的map,rreduce_Gadaite的博客-CSDN博客 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值