首先,我在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主题?
任何帮助将不胜感激。
答案 0 :(得分:3)
有关可能执行的操作的示例,建议您通过在线Apache Flink Training进行操作。您可以使用滤镜,地图,平面图,Windows和ProcessFunction等操作逐行处理流。
您可能想知道如何方便地使用CSV数据。最简单的方法是使用Table / SQL API,它具有自己的Kafka Connector和CSV Format。
如果不使用Flink的SQL引擎,则可以实现将每个文本行转换为POJO的map函数。有一个here的示例。或实现您自己使用的de / serializer而不是SimpleStringSchema。