PySpark使用spark本机函数过滤RDD



使用pySpark,我需要过滤一个RDD,它是一个字符串列表:

In [74]: sc.textFile("*.txt").collect()
Out[74]:
['labertblubber',
'footbar',
'dummytdumdum',
'col1tcol2tcol3tcol4tcol5',
' 1t2t3t4t5',
' 11t22t33t44t44',
' 9t8t7t6t5',
'labertblubber',
'footbar',
'dummytdumdum',
'col1tcol2tcol3tcol4tcol5',
' 99t2t3t4t5',
' 99t22t33t44t44',
' 99t8t7t6t5']

我想过滤掉任何不以空格开头的行。这,我知道,我可以实现:

sc.textFile("*.txt").filter(lambda x: x[0] == " ")

然而,我希望获得最大的性能,而且据我所知,使用python-lamdas会增加开销,查询规划器无法很好地优化它。

如何在RDD上使用spark本机函数?

我期待着这样的东西:

sc.textFile("*.txt").filter("substr(_, 0, 1) == ' '")

您可以使用spark SQL函数,如:

df = spark.sql("""
SELECT line FROM text.`./`
WHERE line NOT LIKE ' %'
""")

我从未加载过这样的文本文件(主要是镶木地板、JSON或CSV(,但我相信它也应该工作。看看这个spark SQL文档条目。

最新更新