我正在运行Flume代理,它从包含avro记录的磁盘中读取文件。在我的默认设置中,我有以下内容:
agent-1.sources.src-1.deserializer.schemaType = LITERAL
导致运行时警告:
schemaType set to LITERAL, so storing full Avro schema in the header of each event, which may be inefficient. Consider using the hash of the schema instead of the literal schema
现在,当我查看Flume 1.4.0 guide时,在Avro EventDeserializer下,可以设置选项:
option: deserializer.schemaType
default value: HASH
选项说明:如何表示架构。默认情况下,或者指定值HASH时,会对Avro架构进行哈希处理,并将哈希值存储在事件头“flume.avro.schema.hash”中的每个事件中。如果指定了LITERAL,则JSON编码的模式本身存储在事件头“flume.avro.schema.literal”中的每个事件中。与HASH模式相比,使用LITERAL模式效率相对较低。
现在我的问题..如果我将此选项设置为HASH,那么当我在我的接收器上收到这些事件时,我从事件标题中访问的所有内容都是这样的:
flume.avro.schema.hash 0911c27606a05f22
此时,我需要avro架构能够反序列化事件主体(包含avro记录)。如何使用此哈希来获取实际的avro架构?或者在构造需要avro架构的新GenericDatumReader时如何使用此哈希?