如何在filter pyspark rdd中过滤掉以“url”开头的行

a14dhokn  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(360)

我有一个pyspark。

task1 = (text.filter(lambda x: len(x)>0 )) # to filter empty lines
task1.collect()

我的目标是筛选出此文本片段中以“url”开头的行:
['url:http://www.nytimes.com/2016/06/30/sports/baseball/washington-nationals-max-scherzer-baffles-mets-completing-a-sweep.html华盛顿-尽管大都会队在进攻上有困难,但上赛季上半段的出色投球让他们保持了良好的状态。
如何在pyspark语法中轻松实现这一点?

1l5u6lss

1l5u6lss1#

问题需要样本输入和输出。我假设提供的数据是表中的行。如果情况并非如此,请在澄清后更改答案。如果是,;
说数据是;

+---+--------------------+
|SID|           Attribute|
+---+--------------------+
|  1|[URL: http://www....|
|  2|scherzer-baffles-...|
|  3|kept the Mets afl...|
+---+--------------------+

让我们使用 filter 沿着 PySpark expr() ; 用于在 Dataframe 中执行类似sql的表达式的sql函数

from pyspark.sql.functions import *
df.filter(expr("Attribute like '[__%'")).show()#Finds any values that start with "[" and are at least 3 characters in length

+---+--------------------+
|SID|           Attribute|
+---+--------------------+
|  1|[URL: http://www....|
+---+--------------------+
6qftjkof

6qftjkof2#

你可以使用正则表达式

import re

reg = re.compile('^(?!URL).*')
task1 = text.filter(lambda x: reg.match(x))

相关问题