有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hazelcast多个左连接对两个都不起作用它工作正常

我是Hazelcast Jet的新手,我正在尝试加入4个数据,但join并没有按照公认的方式工作。我不确定我做错了什么,因为两个表工作正常。请帮忙 我的代码:

BatchStageWithKey<Object, Object> jdbcGroupByKey = batch1.groupingKey(jdbcData ->  {
                 // logic for creating key   
             });

    BatchStageWithKey<Object, Object> jdbcGroupByKey2 = batch2.groupingKey(jdbcData ->  {
                 // logic for creating key   
             });

BatchStageWithKey<Object, Object> jdbcGroupByKey3 = batch3.groupingKey(jdbcData ->  {
                 // logic for creating key   
             });

现在用left join连接两个

BatchStage<Entry<Object, Tuple2<Object, List<Object>>>> d = jdbcGroupByKey.aggregate2(AggregateOperations.pickAny(),jdbcGroupByKey1,AggregateOperations.toList());

这很好,但当我尝试使用多个时,它不起作用: 这里我将“d”转换为BatchStage<Object>

BatchStage<Entry<Object, Tuple2<Object, List<Object>>>> d2 = d1.aggregate2(AggregateOperations.pickAny(),jdbcGroupByKey1,AggregateOperations.toList());

这只是一个例子,可能有5个表,所以不能使用Tuple3,所以我可以做什么,请帮助


共 (1) 个答案

  1. # 1 楼答案

    如果要聚合的输入超过3个,则应使用aggregate3()aggregateBuilder()。您在示例中所做的是聚合聚合的输出。你也可以这样做,但效率较低。它看起来是这样的:

    BatchStage<Entry<Object, Tuple2<Object, List<Object>>>> d1 = 
        jdbcGroupByKey.aggregate2(pickAny(),jdbcGroupByKey1,toList());
    BatchStage<Entry<Object, Tuple2<Tuple2<Object, List<Object>>, List<Object>>>> d2 = 
        d1.groupingKey(Entry::getKey)
          .aggregate2(pickAny(),jdbcGroupByKey1,toList());
    

    (代码未编译,可能有错误,但希望您能理解。)