我使用java.util.Map
作为位置或表达式键不支持的数据类型,那么如果组字段数超过25,我如何对基于java.util.Map
的数据集进行分组?
示例代码如下所示:
Map<String,Object> input1 = new HashMap<>();
for (int i=0; i<30; i++){
input.put("groupField" + i,"value"+i);
}
input1.put("quantity",200);
Map<String,Object> input2 = new HashMap<>();
for (int i=0; i<30; i++){
input2.put("groupField" + i,"value"+i);
}
input2.put("quantity",200);
DataSet<Map<String,Object>> input = env.fromElements(input1,input2);
//how can i group this map based dataSet and aggregate on the 'quantity' field if the number of grouping fields is more than 25?
答案 0 :(得分:1)
我建议使用自定义类作为组和排序操作的键类型,即从KeySelector
返回此键类的对象。如果自定义类正确实现java.lang.Comparable
接口和Object.hashCode()
方法,则可以将其用作键。
例如,您的密钥类型可以是java.util.ArrayList
周围的简单包装,以支持任意多个字段。