本文主要讨论如何使用 Alink 的 Kafka 连接组件(Kafka011SourceStreamOp和Kafka011SinkStreamOp)读取写入数据。如何你需要一个本地的 Kafka 数据源进行实验,可以参考我另外一篇文章,详细介绍了搭建 Kafka 及建立 Topic 的过程。
-
在 MacOS 上搭建 Kafka
https://zhuanlan.zhihu.com/p/100990121
-
在 Windows 上搭建 Kafka
https://zhuanlan.zhihu.com/p/101162159
首先,我们演示如何将流式数据写入 Kafka。
假设已经有一个 Kafka 的数据源(譬如:本地 Kafka 数据源,端口为 9092),并且 Kafka 中已经有一个 topic,名称为 iris,则 Kafka 写入组件 Kafka011SinkStreamOp 可以如下设置:
Kafka011SinkStreamOp sink = new Kafka011SinkStreamOp()
.setBootstrapServers("localhost:9092")
.setDataFormat("json")
.setTopic("iris");
注意:Kafka 写入的数据只能为字符串,需要设置每条记录转化为字符串的方式,这里我们使用 Json 格式。
我们还需要构造一个获取流式数据的方式,最简单的方式是使用 CsvSourceStreamOp 组件,将 csv 数据(alink-release.oss-cn-beijing.aliyuncs.com)以流的方式读入。然后,再连接 Kafka 写入组件,开始执行流式操作。完整代码如下:
private static void writeKafka() throws Exception {
String URL = "https://alink-release.oss-cn-beijing.aliyuncs.com/data-files/iris.csv";
String SCHEMA_STR
= "sepal_length double, sepal_width double, petal_length double, petal_width double, category string";
CsvSourceStreamOp data = new CsvSourceStreamOp().setFilePath(URL).setSchemaStr(SCHEMA_STR);
Kafka011SinkStreamOp sink = new Kafka011SinkStreamOp()
.setBootstrapServers("localhost:9092")
.setDataFormat(