当前位置:  开发笔记 > 编程语言 > 正文

如何从PySpark中的map方法返回一个空(null?)项?

如何解决《如何从PySpark中的map方法返回一个空(null?)项?》经验,为你挑选了1个好方法。

我正在编写一个map方法

RDD.map(lambda line: my_method(line))

并且基于my_method中的特定条件(假设行以'a'开头),我想要返回一个特定值,否则一起忽略该项.

现在,如果在项目上没有满足条件并且稍后使用另一个条件,则返回-1

RDD.filter() method to remove all the ones with -1.

有什么更好的方法可以通过从my_method返回null来忽略这些项目?



1> zero323..:

在这种情况下,这flatMap是你的朋友:

    调整my_method所以它返回单个元素列表或空列表(或创建一个像这里的包装器什么相当于pyspark中的scala.util.Try?)

    def my_method(line):
        return [line.lower()] if line.startswith("a") else []
    

    flatMap

    rdd = sc.parallelize(["aDSd", "CDd", "aCVED"])
    
    rdd.flatMap(lambda line: my_method(line)).collect()
    ## ['adsd', 'acved']
    

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有