【问题标题】:get the highest key from a javaPairRDD从 javaPairRDD 中获取最高密钥
【发布时间】:2016-07-22 18:42:45
【问题描述】:

我有一个名为“rdd”的 javaPairRDD,它的元组定义为:

 <Integer,String[]> 

我想使用 max() 函数提取最高的键,但它需要一个比较器作为参数,你能给我一个例子如何做到这一点,拜托!!!

示例:

  rdd={(22,[ff,dd])(8,[hh,jj])(6,[rr,tt]).....} 

应用 rdd.max(....) 后,它应该给我:

 int max_key=22;

请帮助我...请在 java 中

【问题讨论】:

    标签: java apache-spark key-value rdd


    【解决方案1】:

    您的方法不起作用,因为元组没有固有的顺序。

    您要做的是获得最大的密钥。最简单的方法是提取密钥,然后像这样获取最大值

    keyRdd = rdd.keys()
    max_key = keyRdd.max()
    

    注意:不是 javaSpark 用户,所以语法可能有点不对。

    【讨论】:

    • 我试过了... javaRDD keyRDD=rdd.keys() 但是当我使用 max() 时出现同样的问题,它得到了这个错误:方法 max(comparator) 在type javaRDD 不适用于参数 ()
    【解决方案2】:

    即使@David 的回答是如此合乎逻辑,它对我不起作用,它总是需要一个比较器,当我使用比较器时,它出现了一个异常(不是可序列化的操作,所以我尝试使用 Ordering,但这次是最大值-key 是 1(实际上是最小值),所以最后,我使用了有史以来最简单的方法,我对我的 pairRDD 进行了后代排序,然后我提取了 first() 元组。

    int max-key=rdd.first()._1;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 2018-02-08
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多