将映射流csv文件映射到元组

时间:2018-08-25 09:51:30

标签: java apache-kafka apache-flink map-function data-stream

我正在尝试将已由Flink使用并由Kafka生成的CSV文件映射到Tuple4。我的CSV文件有4列,我想将每一行映射到一个Tuple4中。问题是我不知道如何实现map()和csv2Tuple函数。

在这里我被困住了:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

ParameterTool parameterTool = ParameterTool.fromArgs(ARGS);

DataStreamSource<String> myConsumer = env.addSource(new FlinkKafkaConsumer082<>(parameterTool.getRequired("topic"),
            new SimpleStringSchema(), parameterTool.getProperties()));

DataStream<Tuple4<Integer, Integer, Integer, Integer>> streamTuple = myConsumer.map(new csv2Tuple());
public static class csv2Tuple implements MapFunction<...> {public void map(){...}}

我也想从String解析为Inpleger元组中的项目。

1 个答案:

答案 0 :(得分:1)

假设您将csv文件的每一行生成为Kafka消息,并使用Flink Kafka连接器使用它,则只需使用,拆分每条消耗的消息(因为它是csv文件)。

DataStream<Tuple4<Integer, Integer, Integer, Integer,>> streamTuple = myConsumer.map(new MapFunction<String, Tuple4<Integer, Integer, Integer, Integer>>() {
            @Override
            public Tuple4<Integer, Integer, Integer, Integer> map(String str) throws Exception {
                String[] temp = str.split(",");
                return new Tuple4<>(
                        Integer.parseInt(temp[0]),
                        Integer.parseInt(temp[1]),
                        Integer.parseInt(temp[2]),
                        Integer.parseInt(temp[3])
                );

            }
        });
相关问题