Skip to main content

CSVReader

描述:

解析CSV格式的数据,并返回CSV文件的每一行作为单独记录。该读取器假定第一行内容包含字段名并且后续行均作为字段值。

标签:

csv, parse, record, row, reader, delimited, comma, separated, values, 记录, 解析

参数:

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

名字默认值允许值列表描述
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版本。
- 使用头部的字符串字段CSV文件里第一行非注释且包含字段名字的行作为头部行。作为头部行对应的所有字段都假定类型为字符串。
- 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内容

支持表达式语言 (支持流属性和变量)
CSV解析Apache Commons CSV
- Apache Commons CSV由Apache实现的CSV解析器
- Jackson CSV由Jackson实现的CSV解析器
指定选用那个解析器来读取CSV数据记录。注意: 不同的解析器可以支持不同的功能,还可以有不同的性能级别。
日期格式指定当读写日期(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)。
CSV格式自定义格式
- 自定义格式通过控制服务的参数配置来处理CSV文件的格式,比如值分隔符之类。
- RFC 4180采用RFC 4180规范定义来处理CSV数据,参考 https://tools.ietf.org/html/rfc4180
- Microsoft Excel采用微软Excel的CSV格式来处理
- Tab分隔CSV数据的值之间采用的是Tab来分隔,而不是逗号分隔
- MySQL格式采用MySQL的CSV格式来处理
- Informix UnloadThe format used by Informix when issuing the UNLOAD TO file_name command
- Informix Unload Escape DisabledThe format used by Informix when issuing the UNLOAD TO file_name command with escaping disabled
指定使用那种CSV数据的格式或使用自定义格式。
值分隔符,用于CSV记录值之间的分隔字符

支持表达式语言 (支持流属性和变量)
首行作为头部
- 是
- 否
指定是否将CSV文件的第一行作为头部还是一个记录。 如果<Schema访问策略>指定必须提供头部,则将忽略该参数,因为头部是必须的,且不会作为记录。否则,如果选择是,则第一行将不作为记录而是作为头部。
忽略CSV头部列名不忽略
- 忽略
- 不忽略
如果第一行作为头部与配置的Schema字段名有不匹配,通过该参数控制是否解析相应字段。如果忽略,则仅解析与配置Schema匹配的字段,而不匹配的则被忽略。如果不忽略,则仅在CSV文件头部中的字段也将作为字段被解析。
引用字符"为了不转义字符,用来将值引用的字符。

支持表达式语言 (支持流属性和变量)
转义字符\ 用于转义的字符,否则这些字符对CSV解析器具有特定含义。

支持表达式语言 (支持流属性和变量)
注释标记用于表示注释的字符。从这个注释开始的任何行都将被忽略。

支持表达式语言 (支持流属性和变量)
Null字符串用于指定字符串值,当处理一个CSV值时,是作为null字段还是普通值
整理字段
- 是
- 否
是否移除字段值前后的空白字符
字符编码UTF-8用于读写CSV文件的字符集编码

状态管理:

该组件不保存状态。

限制:

该组件没有限制

系统资源考量:

未提供。