Named Pipe

支持的管道类型:

  •  Data Collector

Named Pipe目标端将数据写入UNIX命名管道。

可以通过计算机上的两个独立进程访问命名管道(或FIFO)——一个进程以写入者的形式打开该管道,另一个进程以读取者的形式打开。Named Pipe目标端充当写入者。在同一Data Collector计算机上运行的另一个进程可以用作读取者。

使用目标端将数据发送到可以从命名管道读取数据的应用程序。例如,Greenplum gpload实用程序支持从命名管道加载数据。您可以将实用程序配置为从Named Pipe目标端写入的命名管道中读取。然后,该实用程序可以将该数据加载到Greenplum数据库中。

使用Named Pipe目标端之前,必须在安装了Data Collector的计算机上创建命名管道 。您还必须配置在Data Collector计算机上运行的命名管道读取者(或读取应用程序),以从同一命名管道接收数据。

配置Named Pipe目标端时,请输入创建的本地命名管道的完整路径。您还可以指定目标端用来将数据写入命名管道的数据格式。

先决条件

必须先满足以下先决条件,然后才能写入命名管道:

  • 在本地Data Collector计算机上创建命名管道。
  • 在本地Data Collector计算机上配置命名管道读取者以从同一命名管道读取。

创建命名管道

使用mkfifo命令在安装了Data Collector的同一台计算机上创建命名管道。

例如,使用以下命令创建本地命名管道:

mkfifo /tmp/my_pipe

配置命名管道读取者

命名管道读取者(或读取应用程序)必须安装在Data Collector计算机上,并且必须配置为从同一命名管道读取。

例如,将读取者配置为从您使用以下mkfifo命令创建的相同命名管道读取:

/tmp/my_pipe

作为最佳实践,我们建议先启动阅读器,然后再启动包含命名管道目标的管道。

使用命名管道读取者

Named Pipe目标端将数据写入命名管道,然后命名管道读取者(或读取应用程序)读取传入的数据。

考虑Named Pipe目标端和命名管道读取者以下的交互方式:

  • 如果在命名管道读取者可用于读取之前启动管道,则管道将保持在STARTING状态,直到读取者可用为止。

    作为最佳实践,我们建议先启动读取者,然后再启动包含Named Pipe目标端的管道。

  • 当命名管道读取者可用时,管道将转换为RUNNING状态,并且Named Pipe目标端将开始写入命名管道。如果目标端写入速度快于读取者处理数据的速度,则命名管道可能已满。在这种情况下,目标端将等待写入其他数据,直到命名管道可以接收更多数据为止。
  • 如果在命名管道读取者仍然可用时管道停止,则读取者将收到中断管道的IOException。
  • 如果在运行带有Named Pipe目标端的管道时命名管道读取者停止运行,则Data Collector将显示有关断开管道的阶段异常。

数据格式

Named Pipe目标端根据您选择的数据格式将数据写入命名管道。目标端支持为每个记录生成单行输出的数据格式。不支持为每个记录生成具有多行输出的嵌套结构的数据格式,例如XML数据格式。

您可以使用以下数据格式:

Delimited
目标端将记录写为分隔数据。使用此数据格式时,根字段必须是list或list-map。

您可以使用以下分隔格式类型:

  • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
  • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
  • MS Excel CSV -Microsoft Excel逗号分隔文件。
  • MySQL CSV -MySQL逗号分隔文件。
  • Tab-Separated Values -包含制表符分隔的值的文件。
  • PostgreSQL CSV -PostgreSQL逗号分隔文件。
  • PostgreSQL文本 -PostgreSQL文本文件。
  • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
  • Multi Character Delimited-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
JSON
目标端将记录写为JSON数据。您可以使用以下格式之一:

  • Array-每个文件都包含一个数组。在数组中,每个元素都是每个记录的JSON表示形式。
  • Multiple objects-每个文件都包含多个JSON对象。每个对象都是一条记录的JSON表示形式。
SDC Record
目标端以SDC记录数据格式写入记录。
Text
目标端将数据从单个文本字段写入目标系统。配置阶段时,请选择要使用的字段。
您可以配置字符以用作记录分隔符。默认情况下,目标使用UNIX样式的行尾(\n)分隔记录。
当记录不包含选定的文本字段时,目标端可以将缺少的字段报告为错误或忽略该丢失的字段。默认情况下,目标端报告错误。
当配置为忽略缺少的文本字段时,目标端可以丢弃该记录或写入记录分隔符以为该记录创建一个空行。默认情况下,目标端丢弃记录。

配置命名管道目标

配置命名管道目标以将数据写入UNIX命名管道。

  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击 添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

    On Record Error 该阶段的错误记录处理:

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“Named Pipe选项卡上,配置以下属性:
    命名管道属性 描述
    Named Pipe 使用该mkfifo命令创建的本地命名管道的完整路径 。
  3. 在“Data Format选项卡上,配置以下属性:
    数据格式属性 描述
    Data Format 数据格式写入数据:

    • Delimited
    • JSON
    • SDC Record 
    • Text
  4. 对于分隔数据,在“Data Format选项卡上,配置以下属性:
    分隔属性 描述
    Delimiter Format 分隔数据的格式:

    • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
    • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
    • MS Excel CSV -Microsoft Excel逗号分隔文件。
    • MySQL CSV -MySQL逗号分隔文件。
    • Tab-Separated Values -包含制表符分隔的值的文件。
    • PostgreSQL CSV -PostgreSQL逗号分隔文件。
    • PostgreSQL Text -PostgreSQL文本文件。
    • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
    • Multi Character Delimited-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
    Header Line 指示是否创建标题行。
    Replace New Line Characters 用配置的字符串替换换行符。

    在将数据写为单行文本时推荐使用。

    New Line Character Replacement 用于替换每个换行符的字符串。例如,输入一个空格以将每个换行符替换为一个空格。

    留空以删除新行字符。

    Delimiter Character 自定义分隔符格式的分隔符。选择一个可用选项,或使用“Other”输入自定义字符。

    您可以输入使用格式\ U A的Unicode控制符NNNN,其中N是数字0-9或字母AF十六进制数字。例如,输入\ u0000以将空字符用作分隔符,或输入\ u2028以将行分隔符用作分隔符。

    默认为竖线字符(|)。

    Escape Character 自定义分隔符格式的转义符。选择一个可用选项,或使用“Other”输入自定义字符。

    默认为反斜杠字符(\)。

    Quote Character 自定义分隔符格式的引号字符。选择一个可用选项,或使用“Other”输入自定义字符。

    默认为引号字符(””)。

    Charset 写入数据时使用的字符集。
  5. 对于JSON数据,在“Data Format”选项卡上,配置以下属性:
    JSON属性 描述
    JSON Content 写入JSON数据的方法:

    • JSON Array of Objects-每个文件都包含一个数组。在数组中,每个元素都是每个记录的JSON表示形式。
    • Multiple JSON Objects-每个文件包含多个JSON对象。每个对象都是记录的JSON表示形式。
    Charset 写入数据时使用的字符集。
  6. 对于文本数据,在“Data Format选项卡上,配置以下属性:
    文本属性 描述
    Text Field Path 包含要写入的文本数据的字段。所有数据必须合并到指定字段中。
    Record Separator 用于分隔记录的字符。使用任何有效的Java字符串文字。例如,当写入Windows时,您可能会\r\n用来分隔记录。

    默认情况下,目标使用 \n

    On Missing Field 当记录不包含文本字段时,确定目标是将丢失的字段报告为错误还是忽略该丢失的字段。
    Insert Record Separator if No Text 当配置为忽略缺少的文本字段时,插入配置的记录分隔符字符串以创建一个空行。

    如果未选择,则丢弃没有文本字段的记录。

    Charset 写入数据时使用的字符集。