Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从PySpark中的map方法返回空(null?)项?_Python_Apache Spark_Pyspark_Rdd - Fatal编程技术网

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']