Skip to main content

JsonRecordSetWriter

描述:

无论是JSON数组还是JSON对象都将作为一行写入记录。如果选用<数组>输出,甚至记录是单条,也将封装成数组。如果使用的<一行一对象>,则写入对象不会格式化。

标签:

json, resultset, writer, serialize, record, recordset, row

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.

名字默认值允许值列表描述
Schema写入策略不写Schema
- 设置 'schema.name' 属性通过数据流上名为&#39;schema.name&#39;的属性名指定Schema注册服务中的已注册的Schema。如果记录的Schema不能从Schema注册服务中获得,那么数据流中也就没有属性。
- 设置 'avro.schema' 属性通过数据流上名为&#39;avro.schema&#39;的属性来描述记录,且该属性值即为Avro Schema。数据流的内容可以不必是Avro记录,但是数据流上仍然可以有该属性来指定Schema。
- HWX Schema引用属性数据流包含3个用于描述Schema的属性: &#39;schema.identifier&#39;, &#39;schema.version&#39;, 和 &#39;schema.protocol.version&#39;。注意,如果记录中Schema没有包含必要的名字和版本信息,则当写数据时,将报错。
- HWX Schema编码内容引用数据流的内容中包含了引用Schema注册服务的Schema, 引用由&#39;协议版本&#39;的单字符以及8位长度的Schema Id,和4位Schema版本信息组成,用于Hortonworks Schema注册的序列化和反序列化,可从https://github.com/hortonworks/registry中了解更多。注意,如果记录中Schema没有包含必要的名字和版本信息,则当写数据时,将报错。
- Confluent Schema编码内容引用数据流的内容中包含了引用Schema注册服务的Schema,引用由一个单&quot;魔法字符&quot;和4位Schema id名组成,详细参加 http://docs.confluent.io/current/schema-registry/docs/serializer-formatter.html。注意,如果记录中Schema没有包含必要的名字和版本信息,则当写数据时,将报错。支持Confluent Schema注册的3.2.x版本。
- 不写Schema不添加Schema相关的信息到数据流中
指定如何将记录的Schema添加到数据中
Schema Cache控制器服务API:
RecordSchemaCacheService
实现:
VolatileSchemaCache
Specifies a Schema Cache to add the Record Schema to so that Record Readers can quickly lookup the schema.
Schema访问策略继承记录的Schema
- 使用 'Schema名字' 属性Schema的名字通过&#39;Schema名字&#39;属性指定。通过Schema名字来从Schema注册服务中获取相应的Schema。
- 继承记录的Schema用于写入记录的Schema将与创建记录时提供给记录的Schema相同。
- 使用 'Schema内容' 属性通过指定 &#39;Schema内容&#39; 属性提供的自定义Schema内容。无论是否支持表达式,其Schema内容必须提供有效的Avro Schema。
指定如何从数据中获得Schema信息
Schema注册服务控制器服务API:
SchemaRegistry
实现:
AvroSchemaRegistry
ConfluentSchemaRegistry
HortonworksSchemaRegistry
指定Schema注册服务
Schema名字${schema.name}指定从Schema注册服务中获取相应Schema的名字

支持表达式语言 (支持流属性和变量)
Schema版本指定从Schema注册服务中获取相应Schema的版本,如果未指定,则表示最新版本的Schema

支持表达式语言 (支持流属性和变量)
Schema分支当从Schema注册服务中获取相应Schema时,需指定的Schema分支名字。如果指定的<Schema注册服务>不支持分支管理,则该参数将被忽略。

支持表达式语言 (支持流属性和变量)
Schema内容${avro.schema}Avro格式的Schema内容

支持表达式语言 (支持流属性和变量)
日期格式指定当读写日期(Date)字段时使用的格式,如果不指定,默认将假定日期字段为基于纪元的毫秒数(即格林威治时间1970年1月1号午夜)。如果指定,则日期格式必须匹配Java 简单日期格式规范 (比如 MM/dd/yyyy, 具体为 01/01/2017)。
时间格式指定当读写时间(Time)字段时使用的格式。如果不指定,默认将假定日期字段为基于纪元的毫秒数(即格林威治时间1970年1月1号午夜)。 如果指定,则日期格式必须匹配Java 简单日期格式规范 (比如 HH:mm:ss, 具体为 18:04:15)。
时间戳格式指定当读写时间戳(Timestamp)字段时使用的格式。如果不指定,默认将假定日期字段为基于纪元的毫秒数(即格林威治时间1970年1月1号午夜)。 如果指定,则日期格式必须匹配Java 简单日期格式规范 (比如 MM/dd/yyyy HH:mm:ss, 具体为01/01/2017 18:04:15)。
格式化输出
- 格式化
- 不
指定是否格式化输出JSON
空值处理保留
- 保留字段不匹配(即在schema中而记录中没有),或者值本身就是null值,将写入
- 处理字段不匹配(即在schema中而记录中没有),或者值本身就是null值,将不写入
- 处理缺少值当一个字段有null值,将写入。然后,如果一个字段定义在schema里,但是不存在于记录中,将不写入
指定如何写空值的字段
Output GroupingJSON数组
- JSON数组输出记录为JSON数组
- 一行一个JSON对象输出每行记录为一个JSON对象,通过换行符分隔
指定应该如何写JSON记录(JSON数组还是一行一个JSON对象)。注意,如果选择'一行一个JSON对象',则格式化输出应该设置为不格式化
Compression Formatnone
- none
- gzip
- bzip2
- xz-lzma2
- snappy
- snappy framed
The compression format to use. Valid values are: GZIP, BZIP2, XZ-LZMA2, LZMA, Snappy, and Snappy Framed
Compression Level1
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
The compression level to use; this is valid only when using GZIP compression. A lower value results in faster processing but less compression; a value of 0 indicates no compression but simply archiving

状态管理:

该组件不保存状态。

限制:

该组件没有限制

系统资源考量:

未提供。