在 Hazelcast Jet 中执行左、右和内连接

问题描述

我正在开发 Hazelcast jet 应用程序,我尝试使用左联接、右联接或内联接来联接两个源,但我被困在下面:

这是我的代码:

BatchStage<Map<String,Object>> batch1= pipeline.readFrom(companyListBatchSource);
BatchStage<Map<String,Object>> batch2= pipeline.readFrom(employeeListBatchSource);

//Getting group by key
 BatchStageWithKey<Map<String,Object>,Object> jdbcGroupByKey = batch1.groupingKey(a -> a.getSource1().get(col1));
 BatchStageWithKey<Map<String,Object> fileGroupByKey = batch2.groupingKey(b -> b.getSource1().get(col2));

//trying to join but not sure what exactly is happening.
BatchStage<Entry<Object,Tuple2<List<Map<String,Object>>,List<Map<String,Object>>>>> d = jdbcGroupByKey.aggregate2(AggregateOperations.toList(),fileGroupByKey,AggregateOperations.toList());

从上面的代码如何获得BatchStage>格式的数据?我们如何在这里应用不同类型的连接?

解决方法

您的 node_modules 代表单个项目,我们称整个类型为 Map<String,Object>。因此,您的输入是 E 类型的两个流:公司和员工。

JOIN 的结果不是 E 类型,而是一般而言,E

从这里开始,详细信息取决于联接每一侧的基数。如果在双方都按公司分组,则应该有一对多关联和结果类型 Tuple2<List<E>,List<E>>。在这种情况下,将 Tuple2<E,List<E>> 用于公司流,这将导致单个项目并且联接的结果将作为 AggregateOperations.pickAny() 出现。这相当于 LEFT OUTER JOIN。如果您过滤掉员工列表为空的所有结果,则会从中获得内部联接:Entry<Object,Tuple2<List<E>,List<E>>>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...