【发布时间】:2019-12-25 15:56:51
【问题描述】:
我正在尝试使用 Apache Flink 来处理事件。 代码很基础,尝试用空格连接主题拆分词,打印到控制台。卡夫卡版本是 0.9。
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer09;
import org.apache.flink.util.Collector;
import java.util.Properties;
public class KafkaStreaming {
public static void main(String[] args) throws Exception {
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
Properties props = new Properties();
props.setProperty("bootstrap.servers", "kafka servers:9092...");
props.setProperty("zookeeper.connect", "kafka servers:2181...");
props.setProperty("group.id", "flinkPOC");
FlinkKafkaConsumer09<String> consumer = new FlinkKafkaConsumer09<>("topic", new SimpleStringSchema(), props);
DataStream<String> dataStream = env.addSource(consumer);
DataStream<String> wordDataStream = dataStream.flatMap(new Splitter());
wordDataStream.print();
env.execute("Word Split");
}
public static class Splitter implements FlatMapFunction<String, String> {
public void flatMap(String sentence, Collector<String> out) throws Exception {
for (String word : sentence.split(" ")) {
out.collect(word);
}
}
}
}
该应用程序不会在屏幕上打印任何内容(尽管我向 Kafka 生成了事件)。我试图跳过 Splitter FlatMap 功能,但仍然没有任何反应。 Kafka 不需要 SSL。 当我将作业提交到集群时,我在日志超时异常中发现:
2019-08-20 14:36:17,654 INFO org.apache.flink.runtime.executiongraph.ExecutionGraph - Source: Custom Source -> Flat Map -> Sink: Print to Std. Out (1/1) (02258a2cafab83afbc0f5650c088da2b) switched from RUNNING to FAILED.
org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
我真的不知道我做错了什么:(
【问题讨论】:
标签: java apache-kafka apache-flink flink-streaming