Kafka Writer通过Kafka服务的Java SDK向Kafka写入数据,本文为您介绍Kafka Writer的实现原理、参数和示例。

注意 目前Kafka Writer仅支持使用独享数据集成资源组,不支持使用默认资源组和自定义资源组

Apache Kafka是一个快速、可扩展、高吞吐和可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理的场景中使用。目前该插件属于公测阶段。

实现原理

Kafka Writer通过Java SDK向Kafka中写入数据,使用的日志服务Java SDK版本如下。
<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka-clients</artifactId>
   <version>2.0.0</version>
</dependency>

参数说明

参数 描述 是否必选
server Kafka的server地址,格式为ip:port
topic Kafka的topic,是Kafka处理资源的消息源(feeds of messages)的不同分类。

每条发布至Kafka集群的消息都有一个类别,该类别被称为topic,一个topic是对一组消息的归纳。

KeyIndex Kafka Writer中作为Key的那一列。
valueIndex Kafka Writer中作为Value的那一列。如果不填写,默认将所有列拼起来作为Value,分隔符为fieldDelimiter
fieldDelimiter 源头的多列数据通过列分隔符拼接后,写出至Kafka。默认值为\t
keyType Kafka的Key的类型,包括BYTEARRAY、DOUBLE、FLOAT、INTEGER、LONG和SHORT。
valueType Kafka的Value的类型,包括BYTEARRAY、DOUBLE、FLOAT、INTEGER、LONG和SHORT。
batchSize 向Kafka一次性写入的数据量,默认为1,024条。

向导模式开发

暂不支持向导模式开发。

脚本模式开发

使用脚本模式开发的详情请参见通过脚本模式配置任务

向Kafka写入数据的JSON配置,如下所示。
{
    "type":"job",
    "version":"2.0",//版本号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"Kafka",//插件名。
            "parameter":{
                   "server": "ip:9092", //Kafka的server地址。
                   "KeyIndex": 0, //作为Key的列。
                   "valueIndex": 1, //作为Value的某列。
                   "keyType": "Integer", //Kafka的Key的类型。
                   "valueType": "Short", //Kafka的Value的类型。
                   "topic": "t08", //Kafka的topic。
                   "batchSize": 1024 //向kafka一次性写入的数据量。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//错误记录数。
        },
        "speed":{
            "throttle":false,//false代表不限流,下面的限流的速度不生效;true代表限流。
            "concurrent":1,//作业并发数。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}