当前位置: 首页 > 知识库问答 >
问题:

从RDD中的单词筛选Spark dataframe中的行

陶温书
2023-03-14

我在spark中有以下命令,

data = sqlContext.sql("select column1, column2, column3 from table_name")

words = sc.textFile("words.txt")

words.txt有一组单词,data有三个字符串列,取自table_name

现在,只要words.txt中每个单词的单词模式出现在三列数据中的任何一列中,我就希望过滤掉数据中的行(spark dataframe)。

例如,如果words.txt有诸如gon之类的单词,并且如果三列数据中的任何一列包含诸如bygonegone等值,我希望过滤掉该行。

我尝试了以下方法:

data.filter(~data['column1'].like('%gon%') | data['column2'].like('%gon%') | data['column3'].like('%gon%')).toPandas()

这只适用于一个词。但是我想检查words.txt中的所有单词并删除它。有办法做到这一点吗?

我对Pyspark是新手。任何建议都是有帮助的。

共有1个答案

危寒
2023-03-14

您可以从words.txt中读取单词,并构建如下所示的regex模式:

(?s)^(?=.*word1)(?=.*word2)(?=.*word3)

等,其中(?s)允许.匹配任何符号,^匹配字符串开始位置,然后每个(?=...)lookahead要求字符串中存在每个单词。

因此,如果将regex放入rxvar中,它将如下所示:

data.filter(~data['column1'].rlike(rx) | data['column2'].rlike(rx) | data['column3'].rlike(rx)).toPandas()
 类似资料:
  • 我想根据RDD中的值从Cassandra查询一些数据。我的方法如下: 虽然Cassandra查询在Spark shell中工作,但当我在平面图中使用它时,它会引发异常: 我的理解是,我不能在另一个RDD内部产生一个RDD。 我在网络上找到的示例读取RDD中的整个Cassandra表并连接RDD(如下所示:https://cassandrastuff.wordpress.com/2014/07/07

  • 我有一个csv,它具有以下结构:

  • 我正在使用SOLRJ(与SOLR 7一起使用),我的索引为文档内容提供了一些名为content_eng、content_ita的字段...它还提供了一个包含文档完整路径的字段(由和处理)。 用户能够在content_xyz字段中进行搜索,这要归功于以下几行:final SolrQuery query=new SolrQuery();setQuery(searchedText);query.set(

  • 在visual studio代码中选择所选单词的所有实例是否有任何技巧或扩展,以便在不搜索和替换的情况下编辑或删除这些实例,如升华文本中的ِAltF3

  • 本文向大家介绍C ++中的按位筛选,包括了C ++中的按位筛选的使用技巧和注意事项,需要的朋友参考一下 在这个问题中,给我们一个数字N。我们的任务是使用按位筛选找到所有小于N的素数。 按位筛是Eratosthenes筛的优化版本,用于查找所有小于给定数的素数。 让我们举个例子来了解这个问题, 输入-N = 25 输出-2 3 5 7 11 13 17 19 23 按位筛子的工作方式与普通筛子相同。

  • 问题内容: 我正在尝试在CRM 2011的报告中使用CRM CRMAFAF筛选器。但是我找不到有关如何执行此操作的任何示例。需要更改查询内容以过滤引号,还需要添加什么参数。 问题答案: 这是您可以查看的一个参考:http : //blogs.msdn.com/b/crm/archive/2009/03/06/microsoft-dynamics-crm-pre- filtering-tips.as