繁体   English   中英

如何使用映射中的键数过滤RDD

[英]How to filter RDDs using count of keys in a map

我有以下RDD

val reducedListOfCalls: RDD[(String, List[Row])]

RDD为:

[(923066800846, List[2016072211,1,923066800846])]

[(923027659472, List[2016072211,1,92328880275]),
  923027659472, List[2016072211,1,92324440275])]

[(923027659475, List[2016072211,1,92328880275]),
 (923027659475, List[2016072211,1,92324430275]),
 (923027659475, List[2016072211,1,92334340275])]

如上所示,第一个RDD具有1个(键,值)对,第二个RDD具有2个,第三个具有3个对。

我要删除所有少于2个键值对的RDD。 预期的RDD结果为:

[(923027659472, List[2016072211,1,92328880275]),
  923027659472, List[2016072211,1,92324440275])]

[(923027659475, List[2016072211,1,92328880275]),
 (923027659475, List[2016072211,1,92324430275]),
 (923027659475, List[2016072211,1,92334340275])]

我尝试了以下方法:

val reducedListOfCalls = listOfMappedCalls.filter(f => f._1.size >1)

但它仍然只给出了原始列表。 筛选器似乎没有任何区别。

是否可以计算映射的RDD中的键数,然后根据键数进行过滤?

您可以在Spark中使用aggregateByKey来计算键的数量。

您应该在您的Tuple2(count, List[List[Row]])创建一个Tuple2(count, List[List[Row]]) 通过reduceByKey可以实现相同的目的

阅读这篇文章,比较这两个功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM