AvroRecordSetWriter

时间:2022-07-24
本文章向大家介绍AvroRecordSetWriter,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

AvroRecordSetWriter

编辑人(全网同名):酷酷的诚 邮箱:zhangchengk@foxmail.com

描述

将数据以avro格式输出。

属性配置

在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。(1.11.4版本)

状态管理

此组件不存储状态。

限制

无。

系统资源方面的考虑

深入讲解

在NIFI的Controller Service中,有一批以Reader、Writer结尾的读写器。AvroRecordSetWriter顾名思义,就是写avro格式数据的。

在属性配置里Cache Size很简单,配置缓存大小,缓存schema信息的。

对于Schema Write Strategy,有很多选项,他们都是跟AvroReader的Schema Access Strategy一一对应的。指定将schema信息写到输出流文件的哪个位置

  1. Embed Avro Schema 内置schema,将schema信息写到avro数据里
  2. Set 'schema.name' Attribute 将schema信息写到输出流的属性schema.name
  3. Set 'avro.schema' Attribute 将schema信息写到输出流的属性avro.schema
  4. HWX Schema Reference Attributes 将schema的描述信息写到流文件中的三个属性值中:schema.identifier, schema.version, schema.protocol.version
  5. HWX Content-Encoded Schema Reference 将schema的描述信息写到流内容中,一个byte指明protocol version,紧跟着8个byte指明schema identifier,最后是4个byte指明schema version. 如果使用以上这两个配置,还得到官网上详情了解学习https://github.com/hortonworks/registry
  6. Confluent Schema Registry Reference 同上,查询schema所需要的信息编码内置到了流文件内容当中,详细还需到官网了解学习http://docs.confluent.io/current/schema-registry/docs/serializer-formatter.html
  7. Do Not Write Schema 不写shemale信息

对于 Schema Access Strategy ,写avro数据也需要schema信息,此配置指明如何获取schema信息。

  1. Use 'Schema Name' Property 使用Schema Name配置,同时必须指定一个Schema Registry控制服务器。Schema Name用来指定schema的名称,然后提供给Schema Registry配置的控制服务器使用来获取schema。
  2. Inherit Record Schema 上游流文件数据内置了schema信息
  3. Use 'Schema Text' Property 这个也非常简单,手动指定一个schema。你可以直接在Schema Text的value里编辑schema文本,也可以在流文件属性或者变量注册表指定一个叫avro.schema的schema文本。当然,avro.schema是人为定义的,可修改。

文章有帮助的话,小手一抖点击在看,并转发吧。谢谢支持哟 (*^__^*)