Skip to main content

JsonTreeReader

描述:

解析JSON为单条记录。当读取器期望每个记录都是结构良好的JSON格式, 则数据流中将包含许多结构良好的JSON数组或JSON对象记录。如果是数组,该数组中的每个元素都被视为单独的记录。如果Schema中的字段不存在于JSON记录中,则为null值。如果JSON记录中存在的字段不在Schema中,则该JSON中的字段将被忽略。

标签:

json, tree, record, reader, parser, 记录, 解析

参数:

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

名字默认值允许值列表描述
Schema访问策略Infer Schema
- 使用 'Schema名字' 属性Schema的名字通过'Schema名字'属性指定。通过Schema名字来从Schema注册服务中获取相应的Schema。
- 使用 'Schema内容' 属性通过指定 'Schema内容' 属性提供的自定义Schema内容。无论是否支持表达式,其Schema内容必须提供有效的Avro Schema。
- HWX Schema引用属性数据流包含3个用于从Schema注册的属性: 'schema.identifier', 'schema.version', 和 'schema.protocol.version'
- HWX Schema编码内容引用数据流的内容中包含了引用Schema注册服务的Schema, 引用由'协议版本'的单字符以及8位长度的Schema Id,和4位Schema版本信息组成,用于Hortonworks Schema注册的序列化和反序列化,可从https://github.com/hortonworks/registry中了解更多。
- Confluent Schema编码内容引用数据流的内容中包含了引用Schema注册服务的Schema,引用由一个单"魔法字符"和4位Schema id名组成,详细参加 http://docs.confluent.io/current/schema-registry/docs/serializer-formatter.html. 支持Confluent Schema注册的3.2.x版本。
- Infer SchemaThe Schema of the data will be inferred automatically when the data is read. See component Usage and Additional Details for information about how the schema is inferred.
指定如何从数据中获得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内容

支持表达式语言 (支持流属性和变量)
Schema Inference Cache控制器服务API:
RecordSchemaCacheService
实现:
VolatileSchemaCache
Specifies a Schema Cache to use when inferring the schema. If not populated, the schema will be inferred each time. However, if a cache is specified, the cache will first be consulted and if the applicable schema can be found, it will be used instead of inferring the 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)。

状态管理:

该组件不保存状态。

限制:

该组件没有限制

系统资源考量:

未提供。

参考:

JsonPathReader