Kudu

支持的管道类型:

  •  Data Collector

Kudu目标端将数据写入Kudu集群。

配置Kudu目标端时,可以为一个或多个Kudu主数据库指定连接信息,定义要使用的表,并可以选择定义字段映射。默认情况下,目标端将字段数据写入具有匹配名称的列。您还可以启用Kerberos身份验证。

Kudu目标端可以使用在sdc.operation.type记录头属性中定义的CRUD操作来写入数据。您可以为没有头属性或值的记录定义默认操作。您还可以配置如何处理不受支持的操作的记录。 有关Data Collector变更数据处理以及启用CDC的源端的列表的信息,请参见处理变更数据。

如果目标端从某些源系统接收到变更数据捕获日志,则必须选择变更日志的格式。

您还可以配置外部一致性模式,操作超时以及要使用的最大工作线程数。

定义CRUD操作

Kudu目标端可以插入,更新,删除或追加数据。目标端根据CRUD操作头属性或与操作相关的阶段属性中定义的CRUD操作写入记录。

您可以通过以下方式定义CRUD操作:

CRUD记录头属性
您可以在CRUD操作记录头属性中定义CRUD操作。目标端在sdc.operation.type记录头属性中寻找要使用的CRUD操作 。
该属性可以包含以下数值之一:

  • 1为INSERT
  • 2为DELETE
  • 3为UPDATE
  • 4为UPSERT
如果您的管道包括启用CRUD的数据源以处理变更数据,则目标端仅从源端生成的sdc.operation.type头属性中读取操作类型 。如果您的管道使用非CDC源端,则可以使用Expression Evaluator或脚本处理器来定义记录头属性。有关Data Collector变更数据处理以及启用CDC的源端的列表的详细信息 ,请参阅处理变更数据。
操作阶段属性
您在目标属性中定义一个默认操作。未设置sdc.operation.type记录头属性时,目标端使用默认操作 。
您还可以定义如何使用sdc.operation.type头属性中定义的不受支持的操作来处理记录。目标端可以丢弃它们,将它们发送给错误,或使用默认操作。

Kudu数据类型

Kudu目标端将Data Collector数据类型转换为以下兼容的Kudu数据类型:

Data Collector数据类型 Kudu数据类型
Boolean Bool
Byte Int8
Byte Array Binary
Decimal Decimal。在Kudu 1.7版和更高版本中可用。如果使用早期版本的Kudu,请配置管道以将Decimal数据类型转换为其他Kudu数据类型。
Double Double
Float Float
Integer Int32
Long Int64或Unixtime_micros。目标根据映射的Kudu列确定要使用的数据类型。

Data Collector Long数据类型存储毫秒值。Kudu Unixtime_micros数据类型存储微秒值。当转换为Unixtime_micros数据类型时,目标会将字段值乘以1,000,以将该值转换为微秒。

Short Int16
String String

目标端无法转换以下Data Collector数据类型。在管道中的较早位置使用Field Type Converter处理器将这些Data Collector数据类型转换为与Kudu兼容的数据类型:

  • Character
  • Date
  • Datetime
  • List
  • List-Map
  • Map
  • Time

Kerberos身份验证

您可以使用Kerberos身份验证连接到Kudu集群。使用Kerberos身份验证时,Data Collector使用Kerberos主体和密钥表连接到Kudu。默认情况下,Data Collector使用启动它的用户帐户进行连接。

Kerberos主体和密钥表在Data Collector配置文件$SDC_CONF/sdc.properties中定义。要使用Kerberos身份验证,请在Data Collector配置文件中配置所有Kerberos属性。

有关为Data Collector启用Kerberos身份验证的详细信息,请参阅Kerberos身份验证。

配置Kudu目标端

配置Kudu目标端以写入Kudu集群。

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

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

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

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

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

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

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。
  2. 在“Kudu”选项卡上,配置以下属性:
    Kudu属性 描述
    Kudu Masters Kudu主节点使用的连接信息的逗号分隔列表。使用以下格式:

    <host>:<port>
    Table Name 要写入的表。输入以下内容之一:

    • 现有Kudu表的名称。如果该表不存在,则管道无法启动。
    • 该表达式的计算结果为现有Kudu表的名称。例如,如果表名称存储在“tableName”记录属性中,则输入以下表达式:
      ${record:attribute('tableName')}

      如果该表不存在,则将记录视为错误记录。

    注意:使用Impala创建的表时,请使用前缀,impala:: 后跟数据库名称和表名称。例如:

    impala::<database name>.<table name> 
    Field to Column Mapping 用于定义记录字段和Kudu列之间的特定映射。默认情况下,目标端将字段数据写入具有匹配名称的列。
    Default Operation 如果未设置记录头属性sdc.operation.type,则执行默认的CRUD操作。
    Change Log Format 如果传入数据是从以下源系统读取的变更数据捕获日志,请选择源系统,以便目标端可以确定日志的格式:

    • Microsoft SQL Server
    • Oracle CDC Client
    • MySQL Binary Log
    • MongoDB Oplog

    对于任何其他源数据,请设置为“None”。

  3. (可选)单击“Advanced选项卡并配置以下属性:
    高级属性 描述
    External Consistency 用于写入Kudu的外部一致性模式:

    • Client Propagated-确保单个客户端的写入自动在外部保持一致。
    • Commit Wait-一个实验性的外部一致性模型,可以紧密同步集群中所有计算机上的时钟。

    有关更多信息,请参见Kudu文档。

    Mutation Buffer Space Kudu用于在记录中写入单批数据的缓冲区的大小。应等于或大于从管道传递的批处理中的记录数。

    默认值为1000条记录。

    Maximum Number of Worker Threads 用于执行该阶段的处理的最大线程数。

    默认值为Kudu默认值——是Data Collector计算机上可用内核数量的两倍。使用此属性可以限制可以使用的线程数。

    要使用默认值,请保留空白或输入0。

    Operation Timeout (milliseconds) 允许进行写操作等的毫秒数。

    默认值为10000,即10秒。

    Admin Operation Timeout (milliseconds) 允许进行管理员类型操作(例如打开表或获取表模式)的毫秒数。

    默认值为30000,即30秒。

    Unsupported Operation Handling sdc.operation.type不支持在记录头属性中定义的CRUD操作类型时采取的措施 :

    • Discard-放弃记录。
    • Send to Error-将记录发送到管道以进行错误处理。
    • Use Default Operation-使用默认操作将记录写入目标系统。