Apache spark 火花流:使用对象作为';mapToPair';
在Spark Streaming应用程序中,我收到以下数据类型:Apache spark 火花流:使用对象作为';mapToPair';,apache-spark,spark-streaming,Apache Spark,Spark Streaming,在Spark Streaming应用程序中,我收到以下数据类型: { "timestamp": 1479740400000, "key": "power", "value": 50 } 我想按时间戳和键进行分组,并聚合值字段 有没有办法通过对象而不是字符串设置关键帧?我想做如下事情: JavaPairDStream<AggregationKey, Integer> aggregation = data.mapToPair( (PairFunction<Da
{
"timestamp": 1479740400000,
"key": "power",
"value": 50
}
我想按时间戳
和键
进行分组,并聚合值
字段
有没有办法通过对象而不是字符串设置关键帧?我想做如下事情:
JavaPairDStream<AggregationKey, Integer> aggregation = data.mapToPair(
(PairFunction<DataObject, AggregationKey, Integer>) data -> {
return new Tuple2<>(new AggregationKey(data), data.value);
}
).reduceByKey(
(Function2<Integer, Integer, Integer>) (value1, value2) -> {
return value1 + value2;
}
);
JavaPairDStream聚合=data.mapToPair(
(配对函数)数据->{
返回新的Tuple2(新的AggregationKey(data),data.value);
}
)D.还原基(
(功能2)(值1、值2)->{
返回值1+2;
}
);
但这种尝试分组的方式在Spark中不起作用
为了在过渡期间解决这个问题,我正在执行
newaggregationkey(data).toString()
。我不知道这是否是一个可接受的解决方案。任何对象都可以与byKey
方法一起使用,只要:
- 它可以序列化
- 具有一致的散列
- 有意义的平等