Lon*_*guy 4 python apache-spark rdd pyspark
我正在编写一个map方法
RDD.map(lambda line: my_method(line))
Run Code Online (Sandbox Code Playgroud)
并且基于my_method中的特定条件(假设行以'a'开头),我想要返回一个特定值,否则一起忽略该项.
现在,如果在项目上没有满足条件并且稍后使用另一个条件,则返回-1
RDD.filter() method to remove all the ones with -1.
Run Code Online (Sandbox Code Playgroud)
有什么更好的方法可以通过从my_method返回null来忽略这些项目?
在这种情况下,这flatMap是你的朋友:
调整my_method所以它返回单个元素列表或空列表(或创建一个像这里的包装器什么相当于pyspark中的scala.util.Try?)
def my_method(line):
return [line.lower()] if line.startswith("a") else []
Run Code Online (Sandbox Code Playgroud)flatMap
rdd = sc.parallelize(["aDSd", "CDd", "aCVED"])
rdd.flatMap(lambda line: my_method(line)).collect()
## ['adsd', 'acved']
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |