基于Filter RDD- PySpark的地图输出

时间:2018-07-10 12:16:31

标签: pyspark

我一直在尝试根据过滤器RDD值获得两个不同的输出。
我有一个text2 RDD,其值类似于

text=["values are defined in config file"]

text2=sc.parallelize(text)
text2.flatMap(lambda x: x.split(" ")).filter(lambda y:'key' in y).map(lambda x: ('key',0) if len(x)==0  else ('key',1)).collect()

如果text2中有“键”,那么我应该得到

('key',1)

否则我应该得到

('key',0)    

'key'在文本中不存在,但是我仍然得到一个空值[]。 有人可以指出我在这里所缺少的东西吗。

谢谢!

1 个答案:

答案 0 :(得分:0)

滥用in。您可以尝试下面的代码

text2 \
  .flatMap(lambda x: x.split(" ")) \
  .map(lambda y: ('key', int(y==key))).collect()

但是我想您不想对您正在寻找的地图进行平面映射

text2 \
  .map(lambda x: x.split(" ")) \
  .map(lambda y: ('key', int(key in y))).collect()