我正在使用Flink DataStream API,那里有可用的机架和我想按机架ID计算温度组的“平均值”.我的窗口持续时间是40秒&我的窗口每10秒钟滑动一次……以下是我的代码,我每隔10秒钟计算一次温度总和,但现在我想计算平均温度::
static Properties properties=new Properties();
public static Properties getProperties()
{
properties.setProperty("bootstrap.servers", "54.164.200.104:9092");
properties.setProperty("zookeeper.connect", "54.164.200.104:2181");
//properties.setProperty("deserializer.class", "kafka.serializer.StringEncoder");
//properties.setProperty("group.id", "akshay");
properties.setProperty("auto.offset.reset", "earliest");
return properties;
}
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws Exception
{
StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
Properties props=Program.getProperties();
DataStream dstream=env.addSource(new FlinkKafkaConsumer09("TemperatureEvent", new TemperatureEventSchema(), props)).assignTimestampsAndWatermarks(new IngestionTimeExtractor<>());
DataStream ds1=dstream.keyBy("rackId").timeWindow(Time.seconds(40), Time.seconds(10)).sum("temperature");
env.execute("Temperature Consumer");
}
如何计算上述例子的平均温度?
本文档展示了如何使用Java和Flink DataStream API处理温度数据。通过设置时间窗口为40秒,并以10秒的间隔滑动,代码目前计算每个机架ID的温度总和。要修改代码以计算平均温度,你需要将`sum("temperature")`替换为`average("temperature")`,从而得到每个窗口内温度的平均值。
190

被折叠的 条评论
为什么被折叠?



