如何为 KTable 实现左连接(leftJoin)的多对一(Many To One)操作?

huangapple 未分类评论48阅读模式
英文:

How to make leftJoin for KTable Many To One?

问题

我有两个KTable,需要进行左连接。这个左连接必须是多对一的。我有以下用于左连接的代码:

KTable<String, GenericRecord> right = createKTable("topic_1");
KTable<String, GenericRecord> left = createKTable("topic_2");

KTable<String, GenericRecord> joined = right.leftJoin(left, (doc, infoReg) -> {
    List<Schema.Field> fields = doc.getSchema().getFields();
    GenericRecord resultRecords = new GenericData.Record(valueSchema);

    for (Schema.Field field : fields) {
        resultRecords.put(field.name(), doc.get(field.name()));
    }
    
    Schema schema = valueSchema.getField("InfoReg").schema();
    GenericArray<GenericRecord> list = new GenericData.Array<>(0, schema);
    list.add(infoReg);
    resultRecords.put("InfoReg", list);

    return resultRecords;
});

但它的工作方式像是一对一。我如何修改代码以实现多对一的左连接?

英文:

I have two Ktable and I need doing leftJoin. This left join mast be ManyToOne. I have next code for leftJoin:

KTable&lt;String, GenericRecord&gt; right = createKTable(&quot;topic_1&quot;);
KTable&lt;String, GenericRecord&gt; left = createKTable(&quot;topic_2&quot;);

KTable&lt;String, GenericRecord&gt; joined = right.leftJoin(left, (doc, infoReg) -&gt; {
            List&lt;Schema.Field&gt; fields = doc.getSchema().getFields();
            GenericRecord resultRecords = new GenericData.Record(valueSchema);

            for (Schema.Field field : fields) {
                resultRecords.put(field.name(), doc.get(field.name()));
            }
            Schema schema = valueSchema.getField(&quot;InfoReg&quot;).schema();
            GenericArray&lt;GenericRecord&gt; list = new GenericData.Array&lt;&gt;(0, schema);
                list.add(infoReg);
                resultRecords.put(&quot;InfoReg&quot;, list);
            
            return resultRecords;
        });

But it's work like OneToOne. How I can change code for ManyToOne?

huangapple
  • 本文由 发表于 2020年6月5日 21:23:34
  • 转载请务必保留本文链接:https://java.coder-hub.com/62216368.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定