在 spark rdd 中过滤索引

Posted

技术标签:

【中文标题】在 spark rdd 中过滤索引【英文标题】:Filter on index in spark rdd 【发布时间】:2016-07-28 12:49:45 【问题描述】:

是否可以过滤 RDD 中的特定列值 .例如:

[(u'62d45630-587a-4290-91e1-a86fbe019bb5', (Row(process_id=1, event_id=u'62d45630-587a-4290-91e1-a86fbe019bb5', event_type=u'PlannedCustomerChoiceWasUpdated', publishedDate=u'2016-07-27T04:16:13.650Z', tgt_tbl_n=u'raw_plan', subj_area=u'plan', flag=u'R', url=u'http://gbp-router.gapinc.dev:8080/planning-service/planning/buy-plan/planned-customer-choices/a448760d-6d92-4dc9-b04a-7ec22673a158', url_id=u'a448760d-6d92-4dc9-b04a-7ec22673a158'), '"ts":"2016-07-28T11:54:54.748Z","httpStatus":404,"errors":["code":"notFound","message":"Planned Customer Choice with id a448760d-6d92-4dc9-b04a-7ec22673a158 does not exist."],"requestId":"ugM4CXkgax5qxILq"', None, u'2016-07-27T04:16:13.650Z', 'N'))]

RDD 是键值形式。我想过滤值[4],即“N”。 谁能帮帮我。

【问题讨论】:

【参考方案1】:

我不太明白您想要完成什么,因为您的问题对我来说有点不清楚,但是有不同的方法可以过滤 RDD。

RDD 本身没有架构,因此据我所知,您无法在此处按列过滤。如果要在 RDD 上运行 SQL 查询,可以通过应用 Schema 并使用 toDF() 函数将 RDD 转换为 Dataframe。然后可以将 Dataframe 与数据库中的表同等处理。

http://spark.apache.org/docs/latest/sql-programming-guide.html#interoperating-with-rdds

过滤 RDD 的另一种方法是 filter() 函数。

http://spark.apache.org/docs/latest/quick-start.html#basics

我猜你的 RDD 有一个元组的形式,它的第二个值是 Iterable。您可以运行 Iterable 并过滤所有与您的条件不匹配的值。鉴于数据的语法始终相同,您还可以过滤 Iterable 中的最后一个位置。

希望有帮助!

【讨论】:

以上是关于在 spark rdd 中过滤索引的主要内容,如果未能解决你的问题,请参考以下文章

过滤计数等于输入文件 rdd Spark 的列

基于 Spark 中另一个 RDD 的过滤器

Fitter Spark RDD 基于过滤不同 RDD 的结果

在 RDD 的过滤器转换中没有得到预期的结果

[Spark精进]必须掌握的4个RDD算子之filter算子

[Spark精进]必须掌握的4个RDD算子之filter算子