2017-04-05 17 views
0

我试图根据云数据流管线中的自定义对象来实现Groupby键。如何通过云数据流中的自定义逻辑按键组

public static void main(String[] args) { 
    Pipeline pipeline = Pipeline.create(PipelineOptionsFactory.create()); 
    List<KV<Student,StudentValues>> studentList = new ArrayList<>(); 
    studentList.add(KV.of(new Student("pawan", 10,"govt"), 
         new StudentValues("V1", 123,"govt"))); 
    studentList.add(KV.of(new Student("pawan", 13223,"word"), 
         new StudentValues("V2", 456,"govt"))); 

    PCollection<KV<Student,StudentValues>> pc = 
    pipeline.apply(Create.of(studentList)); 
    PCollection<KV<Student, Iterable<StudentValues>>> groupedWords = 
    pc.apply(GroupByKey.<Student,StudentValues>create()); 
} 

我只是想GROUPBY都基于Student对象的PCollection记录。

​​

我已重写我的自定义类的equals方法,但每次我收到学生对象的同一个实例来比较内部equals方法。 理想情况下,它比较第一个学生的关键和第二个。

我在这里做什么错了。

回答

0

你为什么认为你做错了什么?每个元素的键都被序列化(使用您指定的AvroCoder),并且GroupByKey可以将具有相同序列化表示的所有元素组合在一起。之后,它不需要比较学生,以确保具有相同密钥的值已经组合在一起。

相关问题