有 Java 编程相关的问题?

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

java Flink数据流将对象映射到对象列表

我正在尝试将对象a的数据流转换为对象B的列表。如下面的示例所示,我正在从flink consumer读取数据流,我需要转换为数据流,以便在MappedMetric对象的时间窗口上运行一些过滤器和聚合。一个LogEvent可能会导致MappedMetric对象列表,所以如果我使用MapFunction,结果将是DataStream<;列表>;。但是,我认为聚合不能在DataStream上运行<;列表>;。非常感谢您的帮助。提前谢谢

// Input Object
public class LogEvent {
    private String id;
    private long timestamp;
    private List<LogMessage> message;
}

public class LogMessage {
    private String accountId;
    private List<Metric> metrics;
}

public class Metric {
    private String name;
    private double value;
}

// Should be transformed to 

public class MappedMetric {
    private String accountId;
    private String name;
    private double value;
    private long timestamp;
}

final DataStream<LogEvent> inputDataStream = **read from Flink consumer**
final DataStream<MappedMetric> aggregatedMetrics = inputDataStream
                .map(**SomeMapFunction**)
                .keyBy(**SomeKey**)
                
                
                


共 (1) 个答案

  1. # 1 楼答案

    您需要使用FlatMap函数,它可以为一个输入生成多个结果。每个结果都是一个MappedMetric记录,而不是一个列表