Skip to main content

CSVRecordSetWriter

描述:

将记录作为CSV数据写入。 首行将包含列名(除非<包含头部>设置为不包含),所有后续行都是与记录字段对应的值。

标签:

csv, result, set, recordset, record, writer, serializer, row, tsv, tab, separated, delimited

参数:

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

名字默认值允许值列表描述
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)。
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列名写入文件的首行
引用字符"为了不转义字符,用来将值引用的字符。

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

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

支持表达式语言 (支持流属性和变量)
Null字符串用于指定字符串值,当处理一个CSV值时,是作为null字段还是普通值
整理字段
- 是
- 否
是否移除字段值前后的空白字符
引用模式最小引用
- 引用所有值所有值都将使用配置的引用字符来引用
- 最小引用仅引用包含特殊字符的值,比如值包含换行符
- 引用非数字值如果只不是数字,则将被引用
- 不引用值不引用任何值。相应地,所有特殊字符将通过配置的转义字符进行转义
当写入时,指定如何引用字段
记录分隔符\n指定用于分隔记录的分隔字符
包含末尾分隔符不包含
- 包含
- 不包含
如果包含,将向写入的每个CSV记录添加一个末尾分隔符。否则,将省略末尾分隔符。
字符编码UTF-8用于读写CSV文件的字符集编码

状态管理:

该组件不保存状态。

限制:

该组件没有限制

系统资源考量:

未提供。