在PySpark / Python RDD中过滤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PySpark / Python RDD中过滤相关的知识,希望对你有一定的参考价值。

我有这样的list

["Dhoni 35 WC 785623", "Sachin 40 Batsman 4500", "Dravid 45 Batsman 50000", "Kumble 41 Bowler 456431", "Srinath 41 Bowler 65465"]

应用过滤器之后我想要这样:

["Dhoni WC", "Sachin Batsman", "Dravid Batsman", "Kumble Bowler", "Srinath Bowler"]

我试过这种方式

m = sc.parallelize([“Dhoni 35 WC 785623”,“Sachin 40 Batsman 4500”,“Dravid 45 Batsman 50000”,“Kumble 41 Bowler 456431”,“Srinath 41 Bowler 65465”])

n = m.map(lambda k:k.split(''))

o = n.map(lambda s:(s [0]))o.collect()

['Dhoni','Sachin','Dravid','Kumble','Srinath']

q = n.map(lambda s:s [2])

q.collect()

['WC','击球手','击球手','保龄球','保龄球']

答案

前提是,所有列表项都具有相同的格式,实现此目的的一种方法是使用map

rdd = sc.parallelize(["Dhoni 35 WC 785623","Sachin 40 Batsman 4500","Dravid 45 Batsman 50000","Kumble 41 Bowler 456431","Srinath 41 Bowler 65465"])

rdd.map(lambda x:(x.split(' ')[0]+' '+x.split(' ')[2])).collect()

输出:

['Dhoni WC', 'Sachin Batsman', 'Dravid Batsman', 'Kumble Bowler', 'Srinath Bowler']

以上是关于在PySpark / Python RDD中过滤的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark - 使用广播字典中的日期过滤 RDD

在pyspark中过滤两个RDD

如何从 Pyspark 中的 RDD 中过滤

如何从 pyspark.rdd.PipelinedRDD 中过滤掉值?

如何在过滤器pyspark RDD中过滤掉某种模式[重复]

PySpark:在“NoneType”对象上过滤掉 RDD 元素失败是不可迭代的