【问题标题】:How to filter out lines starting with 'URL' in filter pyspark RDD如何在过滤器pyspark RDD中过滤掉以“URL”开头的行
【发布时间】:2021-07-10 03:25:26
【问题描述】:

我初始化了一个 pyspark sc。

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

我的目标是在此文本 sn-p 中过滤掉以“URL”开头的行:

['网址:http://www.nytimes.com/2016/06/30/sports/baseball/washington-nationals-max-scherzer-baffles-mets-completing-a-sweep.html', '华盛顿——尽管大都会队在进攻端陷入困境,但上赛季前半段出色的投球让他们保持了稳定。

如何在 pyspark 语法中轻松做到这一点?

【问题讨论】:

  • 您能否提供您的 df 架构、示例输入、预期输出?

标签: python pyspark rdd


【解决方案1】:

问题需要样本输入和输出。我假设提供的数据是表中的行。如果不是这种情况,很高兴在澄清后更改答案。如果是那么;

说数据是;

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

让我们使用filterPySpark expr();用于在数据帧中执行类似 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....|
+---+--------------------+

【讨论】:

    【解决方案2】:

    你可以使用正则表达式

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多