簡體   English   中英

RDD如何使用Set作為另一個RDD的過濾器

[英]RDD how to use a Set as a filter to another RDD

我需要使用元組作為鍵來找到RDD的最大值。 原始的RDD定義為:testRDD如下:

TestRDD(3,249345,038.9,1)
TestRDD(3,249345,785.59,2)
TestRDD(3,249345,584.9,3)
TestRDD(3,249345,427.5,4)
TestRDD(3,249345,410.71,5)

我需要根據元組(1,3)找到第二列的最大值,我可以通過執行以下操作來達到此目的:

val agg_rdd = TestRDD.map(d => ((d.col1,d.col3),(d.col2))).groupByKey()
val max_AggRDD = agg_rdd.map{case ((col1,col3),(col2)) => (col1,col3) -> col2.max}
val ids_maxAggRDD = max_AggRDD.collect.toSet

現在,我需要使用ids_maxAggRDD的輸出(其id定義為scala.collection.immutable.Set [(((String,String),Long)])作為原始testRDD的過濾器。

我似乎無法使用該值來執行此操作。

 val Max_RDD = TestRDD.filter(v => ids_maxAggRDD.value.contains(v.col1,v.col3,v.col2)))
  1. 我應該將最大id集轉換為某種東西嗎
  2. 有沒有更好的方法來實現我想要實現的目標?

我僅使用不含.value的包含內容就可以使其正常工作。 不確定這是否是最佳方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM