Event序列化器
File Roll Sink 和 HDFS Sink 都使用过 EventSerializer 接口。下面介绍了随Flume一起提供的Event序列化器的详细信息。
消息体文本序列化器
它的别名是:text。这个序列化器会把Event消息体里面的内容写到输出流同时不会对内容做任何的修改和转换。Event的header部分会被忽略掉,下面是配置参数:
属性 | 默认值 | 解释 |
---|---|---|
appendNewline | true | 是否在写入时将换行符附加到每个Event。由于遗留原因,默认值为true假定Event不包含换行符。 |
配置范例:
- a1.sinks = k1
- a1.sinks.k1.type = file_roll
- a1.sinks.k1.channel = c1
- a1.sinks.k1.sink.directory = /var/log/flume
- a1.sinks.k1.sink.serializer = text
- a1.sinks.k1.sink.serializer.appendNewline = false
Flume Event的Avro序列化器
别名: avro_event。
这个序列化器会把Event序列化成Avro的容器文件。使用的模式与 Avro RPC 机制中用于Flume Event的模式相同。
这个序列化器继承自 AbstractAvroEventSerializer 类。
配置参数:
属性 | 默认值 | 解释 |
---|---|---|
syncIntervalBytes | 2048000 | Avro同步间隔,大约的字节数。 |
compressionCodec | null | 指定 Avro压缩编码器。有关受支持的编码器,请参阅Avro的CodecFactory文档。 |
配置范例:
- a1.sinks.k1.type = hdfs
- a1.sinks.k1.channel = c1
- a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
- a1.sinks.k1.serializer = avro_event
- a1.sinks.k1.serializer.compressionCodec = snappy
Avro序列化器
别名: 没有别名,只能配成全限定类名: org.apache.flume.sink.hdfs.AvroEventSerializer$Builder
。
这个序列化器跟上面的很像,不同的是这个可以配置记录使用的模式。 记录模式可以指定为Flume配置属性,也可以在Event头中传递。
为了能够配置记录的模式,使用下面 schemaURL 这个参数来配置。
如果要在Event头中传递记录模式,请指定包含模式的JSON格式表示的Event头 flume.avro.schema.literal 或包含可以找到模式的URL的 flume.avro.schema.url (hdfs:// 协议的URI是支持的)。这个序列化器继承自 AbstractAvroEventSerializer 类。
配置参数:
属性 | 默认值 | 解释 |
---|---|---|
syncIntervalBytes | 2048000 | Avro同步间隔,大约的字节数。 |
compressionCodec | null | 指定 Avro压缩编码器。有关受支持的编码器,请参阅Avro的CodecFactory文档。 |
schemaURL | null | 能够获取Avro模式的URL,如果header里面包含模式信息,优先级会高于这个参数的配置 |
配置范例:
- a1.sinks.k1.type = hdfs
- a1.sinks.k1.channel = c1
- a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
- a1.sinks.k1.serializer = org.apache.flume.sink.hdfs.AvroEventSerializer$Builder
- a1.sinks.k1.serializer.compressionCodec = snappy
- a1.sinks.k1.serializer.schemaURL = hdfs://namenode/path/to/schema.avsc
当前内容版权归 liyifeng 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 liyifeng 译 .