如何在Flink程序中逐行阅读Kafka Topic

时间:2019-06-24 03:54:08

标签: apache-kafka apache-flink kafka-topic

首先,我在Kafka主题中加载CSV文件,然后可以通过Flink程序打印主题。代码如下:

 final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

    Properties prop = new Properties();
    prop.setProperty("bootstrap.servers", 
     "10.32.0.2:9092,10.32.0.3:9092,10.32.0.4:9092");
    prop.setProperty("group.id", "test");
    FlinkKafkaConsumer<String> myConsumer= new FlinkKafkaConsumer<> 
     ("flinkTopic", new SimpleStringSchema(),prop);
    myConsumer.setStartFromEarliest();
    DataStream<String> stream = env.addSource(myConsumer);
    stream.print();
    env.execute("Flink Streaming Java API Skeleton");

我的问题是我想逐行阅读主题并分别处理每行,请您指导我如何逐行阅读Kafka主题?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

有关可能执行的操作的示例,建议您通过在线Apache Flink Training进行操作。您可以使用滤镜,地图,平面图,Windows和ProcessFunction等操作逐行处理流。

您可能想知道如何方便地使用CSV数据。最简单的方法是使用Table / SQL API,它具有自己的Kafka ConnectorCSV Format

如果不使用Flink的SQL引擎,则可以实现将每个文本行转换为POJO的map函数。有一个here的示例。或实现您自己使用的de / serializer而不是SimpleStringSchema。