Python 如何从PySpark中的map方法返回空(null?)项?
我正在使用Python 如何从PySpark中的map方法返回空(null?)项?,python,apache-spark,pyspark,rdd,Python,Apache Spark,Pyspark,Rdd,我正在使用 RDD.map(lambda line: my_method(line)) 基于我的_方法中的一个特定条件(假设行以“a”开头),我想返回一个特定的值,否则一起忽略该项 现在,如果该项不满足条件,我将返回-1,然后使用另一个 RDD.filter() method to remove all the ones with -1. 通过从my_方法返回null,有没有更好的方法可以忽略这些项目?在这种情况下flatMap是您的朋友: 调整my_方法,使其返回单个元素列表或空列表(或创
RDD.map(lambda line: my_method(line))
基于我的_方法中的一个特定条件(假设行以“a”开头),我想返回一个特定的值,否则一起忽略该项
现在,如果该项不满足条件,我将返回-1,然后使用另一个
RDD.filter() method to remove all the ones with -1.
通过从my_方法返回null,有没有更好的方法可以忽略这些项目?在这种情况下
flatMap
是您的朋友:
my_方法
,使其返回单个元素列表或空列表(或创建类似于此处的包装器)
flatMap
rdd = sc.parallelize(["aDSd", "CDd", "aCVED"])
rdd.flatMap(lambda line: my_method(line)).collect()
## ['adsd', 'acved']
如果您想根据某些条件忽略这些项,那么为什么不单独使用
过滤器?为什么要用地图?如果要对其进行转换,可以在“过滤器”的输出上使用映射。过滤器是转换方法。由于创建新的RDD,这是一项高成本的操作
rdd = sc.parallelize(["aDSd", "CDd", "aCVED"])
rdd.flatMap(lambda line: my_method(line)).collect()
## ['adsd', 'acved']