【问题标题】:How to use a java custom comparator for ordering a Spark RDD如何使用 java 自定义比较器来订购 Spark RDD
【发布时间】:2017-04-06 22:29:14
【问题描述】:

我有一个以这种方式实现 Comparator 的类:

public class MyObject<T>
{
    public static class MyObjectComp<T> implements Comparator<MyObject<T>>
        {
            private LinkedHashSet<Integer> attrList;

            public MyObjectComp (int[] intList)
            {
                this.attrList = new LinkedHashSet<Integer>();
                for (int idx: intList)
                    attrList.add(idx);
            }

            public MyObjectComp (LinkedHashSet<Integer> attrList)
            {
                this.attrList = attrList;
            }


            public int compare(MyObject<T> pf1, MyObject<T> pf2)
            {
                for (Integer idx: attrList)
                {
                    double pf1Norm = pf1.atribute.get(idx).myList.size();
                    double pf2Norm = pf2.atribute.get(idx).myList.size();

                    if (pf1Norm > pf2Norm)
                        return 1;
                    else if (pf1Norm < pf2Norm)
                        return -1;
                }

                return (pf1.key > pf2.key) ? 1 : ((pf1.key < pf2.key) ? -1 : 0); 
            }       

        }   
}

在用 scala 编写的代码的另一部分中,我用这个 MyObject 创建了一个 RDD。现在我需要使用 MyObject 的这个内部比较器类来排序这个 RDD 的元素。我怎么能使用像myRDD. sort()?这样的函数来做到这一点

【问题讨论】:

    标签: java scala apache-spark distributed-computing


    【解决方案1】:

    类似的东西(注意:没有试过这个代码)

    implicit val moo = new MyObjectComp[ T ]( /* ... */ ).asScala
    
    myRDD.sortBy( t => t )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-22
      • 2018-10-31
      • 2015-08-07
      • 2017-07-15
      • 1970-01-01
      • 2021-01-16
      • 2016-12-06
      • 2020-02-24
      相关资源
      最近更新 更多