Event序列化器

File Roll SinkHDFS Sink 都使用过 EventSerializer 接口。下面介绍了随Flume一起提供的Event序列化器的详细信息。

消息体文本序列化器

它的别名是:text。这个序列化器会把Event消息体里面的内容写到输出流同时不会对内容做任何的修改和转换。Event的header部分会被忽略掉,下面是配置参数:


属性

默认值

解释

appendNewline

true

是否在写入时将换行符附加到每个Event。由于遗留原因,默认值为true假定Event不包含换行符。

配置范例:

  1. a1.sinks = k1
  2. a1.sinks.k1.type = file_roll
  3. a1.sinks.k1.channel = c1
  4. a1.sinks.k1.sink.directory = /var/log/flume
  5. a1.sinks.k1.sink.serializer = text
  6. 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文档。

配置范例:

  1. a1.sinks.k1.type = hdfs
  2. a1.sinks.k1.channel = c1
  3. a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
  4. a1.sinks.k1.serializer = avro_event
  5. 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里面包含模式信息,优先级会高于这个参数的配置

配置范例:

  1. a1.sinks.k1.type = hdfs
  2. a1.sinks.k1.channel = c1
  3. a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
  4. a1.sinks.k1.serializer = org.apache.flume.sink.hdfs.AvroEventSerializer$Builder
  5. a1.sinks.k1.serializer.compressionCodec = snappy
  6. a1.sinks.k1.serializer.schemaURL = hdfs://namenode/path/to/schema.avsc