过滤spark rdd中的索引

时间:2016-07-28 12:49:45

标签: python apache-spark pyspark rdd

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

[(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 个答案:

答案 0 :(得分:-1)

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

RDD本身没有架构,所以就我所知,你不能在这里进行列式过滤。如果要在RDD上运行SQL查询,可以通过应用Schema并使用toDF()函数将RDD转换为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中的最后一个位置,因为您的数据语法始终相同。

希望有所帮助!