SQL Server 2019 BDC Bulk Loader

支持的管道类型:

  •  Data Collector

SQL Server 2019 BDC Bulk Loader目标端通过JDBC连接将数据批量写入Microsoft SQL Server 2019 Big Data Cluster(BDC)。

目标端根据匹配名称将数据从记录字段写入表的列。通过在记录中出现新表引用时创建新的SQL Server或外部表,或在记录中出现新字段引用时创建新的SQL Server列,可以将目标端配置为自动处理数据漂移。目标端无法从存储Map,List,List_map或File_ref数据类型存储数据的记录字段中写入数据。

配置目标端时,请指定连接信息,包括要写入的数据库,模式和表,以及使用的连接数。您可以指定一个行字段,列出要写入表的每一行中包括的字段,也可以让目标端写除指定字段之外的所有行。您还可以配置目标端,以使用指定的默认值替换缺少的字段或包含无效数据类型的字段,并使用指定的字符替换字符串字段中的换行符。

使用SQL Server 2019 BDC Bulk Loader目标端之前,必须先安装SQL Server 2019 Big Data Cluster阶段库并完成其他先决任务。SQL Server 2019 Big Data Cluster阶段库是一个企业版阶段库,仅供开发用途免费。有关购买用于生产的阶段库的信息,请联系StreamSets。

先决条件

在配置SQL Server 2019 BDC批量加载程序目标之前,请完成以下先决条件:

  1. 确保您可以使用SQL Server凭据访问SQL Server 2019 BDC
  2. 安装SQL Server 2019大数据群集阶段库。
  3. 检索连接到SQL Server 2019 BDC所需的JDBC URL ,并使用该URL配置目标。

安装SQL Server 2019大数据群集阶段库

在使用SQL Server 2019 BDC Bulk Loader目标端之前,您必须安装SQL Server 2019 Big Data Cluster阶段库。SQL Server 2019 Big Data Cluster阶段库包含目标位置用来访问SQL Server 2019 BDC的JDBC驱动程序。

SQL Server 2019 Big Data Cluster阶段库是一个企业版阶段库,仅供开发用途免费。有关购买用于生产的阶段库的信息,请联系StreamSets。

您可以使用以下任何一种方法来安装SQL Server 2019 Big Data Cluster阶段库:

  • 将库安装在现有的Data Collector中。使用对Data Collector安装有效的技术:
    • 使用软件包管理器进行安装 – 可用于tarball安装的Data Collector
    • 作为自定义阶段库安装 – 可用于tarball,RPM或Cloudera Manager安装的Data Collector
  • 如果使用Control Hub,请将库安装在编排框架(例如Kubernetes)的预配Data Collector容器中。使用对您的环境有效的技术:
    • 在生产环境中,请参阅Control Hub主题Provisioning Data Collectors。您必须在自定义的StreamSets Data Collector Docker映像中安装SQL Server 2019 Big Data Cluster阶段库。
    • 在开发环境中,您可以运行StreamSets开发的部署脚本,以通过Control Hub尝试使用带有Data Collector的SQL Server 2019 BDC

      该脚本在Kubernetes群集上部署了Control Hub Provisioning代理和Data Collector。该脚本会在已部署的Data Collector中自动安装SQL Server 2019 Big Data Cluster阶段库。您可以将该Data Collector用作创作Data Collector来创建和测试SQL Server 2019 BDC管道。

      仅在开发环境中使用脚本。有关更多信息,请参见Github中的部署脚本

支持的版本

下表列出了要与特定Data Collector 版本一起使用的SQL Server 2019大数据群集阶段库的版本:

Data Collector Version Supported Stage Library Version
Data Collector 3.12.x and later SQL Server 2019 Big Data Cluster Enterprise Library 1.0.0

使用软件包管理器安装

您可以使用程序包管理器在tarball安装的Data Collector上安装SQL Server 2019 Big Data Cluster阶段库。

  1. 单击包管理器图标:
  2. 在导航面板中,单击Enterprise Stage Libraries
  3. 选择SQL Server 2019 Big Data Cluster企业库,然后单击安装图标: 
  4. 阅读StreamSets订阅服务条款。如果您同意,请选中复选框,然后单击“Install
    Data Collector将安装所选的阶段库。
  5. 重新启动Data Collector

作为自定义阶段库安装

您可以在tarball,RPM或Cloudera Manager安装的Data Collector上将 SQL Server 2019 Big Data Cluster Enterprise阶段库安装为自定义阶段库。

  1. 要下载阶段库,请转到StreamSets下载企业连接器页面。
    该网页显示按发布日期组织的企业版阶段库,并在页面顶部显示最新版本。
  2. 单击您想要下载的企业版阶段库名称和版本。
  3. 在“Download Enterprise Connectors表单中,输入您的姓名和联系信息。
  4. 阅读StreamSets订阅服务条款。如果您同意,请接受服务条款,然后单击“Submit
    阶段库下载。
  5. 将企业版阶段库安装和管理为自定义阶段库。
    有关更多信息,请参见Custom Stage Libraries。

数据漂移

您可以配置SQL Server 2019 BDC Bulk Loader目标端以自动补偿列或表中的更改,也称为数据漂移。

若要使目标端自动创建新列,请在“JDBC”选项卡上选择“Data Drift Enabled”属性。当新字段出现在记录中时,SQL Server 2019 BDC Bulk Loader目标端将在SQL Server表中创建新列。例如,如果一条记录突然包含一个新Address2字段,则目标端将在目标表中创建一个新列Address2

默认情况下,目标端根据新字段中的数据创建新列,例如为小数数据创建一个Double列。但是,您可以配置目标端以将所有新列创建为Varchar。

若要使目标端根据需要创建新表,请选择“Table Auto Create”属性。默认情况下,目标将这些新表创建为内部表。若要使目标将新表创建为外部表,请选择“External Tables”属性,然后在“External Tables”选项卡上配置外部表。

例如,假设目标端根据Region字段中的区域名称将数据写入表,并且在记录中出现一个新区域SW-3。目标端将在SQL Server或已配置的外部表中创建一个新表SW-3,并将记录写入新表中。

您可以使用此功能在空数据库模式中创建所有必要的表。

生成的数据类型

在创建新表或在现有表中创建新列时,SQL Server 2019 BDC Bulk Loader目标端根据字段名称生成新的列名称,并根据字段中数据的类型生成列数据类型。

您可以配置目标端以将所有新列创建为Varchar。但是,默认情况下,SQL Server 2019 BDC Bulk Loader目标端创建的列如下:

Record Field Data Type SQL Server 2019 BDC Column Data Type
Boolean Bit
Byte Tinyint
Byte_array Binary
Char Char
Date Date
Datetime Datetime
Decimal Decimal
Float Real
Integer Int
Long Bigint
Short Smallint
String Varchar
Time Time
Zoned_datetime Datetimeoffset
注意:目标无法写入包含Map,List_map,List或File_ref数据类型的数据的字段。遇到这些数据类型时,该阶段将生成错误记录。

行生成

默认情况下,SQL Server 2019 BDC Bulk Loader目标端包含写入SQL Server 2019 BDC表的行中记录中的所有字段。您可以将目标端配置为仅包括指定的字段。

在“Row Field”属性中,在记录中指定一个映射或列表映射字段,其中包含目标端从记录写入的所有数据。默认情况下,该属性设置为根字段/,并且目标端写入记录中的所有字段。如果指定映射或列表映射字段,则目标端仅从指定映射或列表映射字段中的字段写入数据,而排除所有其他记录数据。当记录中的单个映射或列表映射字段中存在要写入SQL Server 2019 BDC的数据时,请编辑“Row Field”属性。

如果您不想包括所有字段,并且没有包含要包含的字段的映射或列表映射字段,则可以将目标端配置为忽略特定字段。编辑“Fields to Ignore”属性以列出您不想写入的字段。

默认情况下,目标端将字段缺失或字段中数据类型无效的记录视为错误记录。您可以配置目标端以使用默认值替换缺少的字段和无效类型的数据。您还可以指定用于每种数据类型的默认值。您还可以配置目标端,以使用替换字符替换字符串字段中的换行符。

配置SQL Server 2019 BDC Bulk Loader目标端

配置SQL Server 2019 BDC Bulk Loader目标端以将数据写入SQL Server 2019 BDC。在管道中使用目标端之前,请完成所需的先决条件。

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

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

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

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

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

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

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“JDBC”选项卡上,配置以下属性:
    JDBC属性 描述
    JDBC Connection String 用于通过JDBC驱动程序连接到SQL Server 2019 BDC的字符串。

    连接字符串需要以下格式:

    jdbc:sqlserver://<ip>:<port>
    默认情况下,该属性包含一个表达式语言函数:

    jdbc:sqlserver://${sqlServerBDC:hostAndPort("master-svc-external")}

    该函数在$SDC_RESOURCES/sql-server-bdc-resources 文件夹中搜索sql-server-ip-and-port.json文件。在文件中,该函数使用键值对搜索JSON对象 "serviceName":"master-svc-external",并使用该对象中ipport键所指定的IP地址和端口。

    如果您使用部署脚本安装了SQL Server 2019 Big Data Cluster阶段库,则可以使用默认字符串,因为该脚本会自动创建该功能所需的文件。

    如果不使用部署脚本,则可以编辑连接字符串以指定IP地址和端口,也可以使用默认字符串并使用以下JSON对象创建所需的文件:

    {
    "serviceName": "master-svc-external",
    "ip": "<IP address>",
    "port": <port number>
    }
    
    Database SQL Server 2019 BDC中要写入的数据库。
    Schema SQL Server 2019 BDC中的模式用于写入记录。
    Table SQL Server 2019 BDC中要写入的表。
    Data Drift Enabled 当记录包含新字段时,在现有表中创建新列。

    注意: SQL Server 2019 BDC无法在现有外部表中创建新列。
    Table Auto Create 在需要时自动创建表。选择“Data Drift Enabled”属性时可用。
    External Tables 创建新表作为外部表。选择“Table Auto Create”属性时可用。

    如果选择此属性,则还需要在“External Table选项卡上配置属性。

    Create New Columns as VARCHAR 将所有新列创建为Varchar列。默认情况下,目标端根据字段中的数据类型创建新列。选择“Data Drift Enabled”属性时可用。
    Connection Pool Size 用于写入SQL Server 2019 BDC的最大连接数。默认值为0,目标端将连接数设置为管道使用的线程数。
    Connection Properties 用于连接到SQL Server 2019 BDC的其他属性。要添加属性,请单击“添加”并定义属性名称和值。

    输入JDBC期望的属性名称和值。

    Upper Case Schema & Field Names 将所有数据库,模式,表和列名称以及用于列名称的字段名称转换为所有大写字母。这也适用于目标端为处理数据漂移而创建的任何新表或列的名称。
    Quote Object Names 在语句中包括数据库,表和列名称的引号。选择何时使用引号创建数据库、表或列,或者何时数据库、表或列名使用小写或大小写混合。
  3. 在“Credentials据”选项卡上,配置以下属性:
    凭据属性 描述
    User SQL Server 2019 BDC用户名。
    Password 用户密码。

    提示: 要保护敏感信息(例如用户名和密码),可以使用运行时资源或凭据存储。
  4. 在“External Table选项卡上,为目标端配置以下属性,以将新表创建为外部表:
    外部表属性 描述
    External Table Location 目标端写入数据的Hadoop或Azure Blob存储中的文件夹或文件路径以及文件名。从根文件夹中指定位置。根文件夹是在外部数据源中设置的数据位置。
    External Data Source 目标端写入数据的外部数据源的名称。
    External File Format 存储文件格式类型和其他外部数据属性的对象的名称。您可以通过Azure Data Studio之类的工具在SQL Server 2019 BDC中创建对象 。
  5. 在“Data选项卡上,配置以下属性:
    数据属性 描述
    Row Field 映射或列表映射字段,其中包含写入SQL Server 2019 BDC中的行的字段。使用默认值时/,目标端包括写入行中记录中的所有字段。
    Fields to Ignore 以逗号分隔的字段列表,可忽略。字段名称区分大小写。
    Null Value 写入字符以替换空值。默认值为 NULL
  6. 在“Data Advanced选项卡上,配置以下属性:
    数据高级属性 描述
    Ignore Missing Fields 为缺少的字段写入默认值,而不是创建错误记录。写入为期望的数据类型指定的默认值。
    Ignore Fields with Invalid Types 替换无效数据类型的值,而不是创建错误记录。写入为期望的数据类型指定的默认值。
    BINARY Default Size Binary字段的默认大小,以字节为单位。输入介于1到8,000之间的值。默认值为8,000。
    CHAR Default Size Char字段的默认大小,以字节为单位。输入介于1到8,000之间的值。默认值为8,000。
    DECIMAL Default Precision Decimal字段中存储的最大位数。这包括小数点两边的数字。输入介于1和38之间的值。默认值为18。
    DECIMAL Default Scale Decimal字段中小数点右边存储的位数。输入介于0和十进制精度之间的值。默认值为0。
    FLOAT Default Size Float字段的默认大小,以尾数位表示。输入介于1到53之间的值。默认值为53。
    VARCHAR Default Size Varchar字段的默认字符串大小,以字节为单位。最大大小为8,000。默认值为8,000。输入0或一个负值以设置最大存储大小2 GB。
    TTIME Default Fractional Seconds Scale Time字段中存储的秒数的小数位数。输入介于0和7之间的值。默认值为7。
    DATETIMEOFFSET Default Fractional Seconds Precision 在Datetimeoffset字段中存储的秒数的小数位数。输入介于0和7之间的值。默认值为7。
    BIGINT Default 当忽略缺少的字段或字段包含无效的数据类型时 ,Bigint字段中存储的默认值默认为空。
    BINARY Default 当忽略缺少的字段或字段包含无效的数据类型时,默认值存储在Binary字段中输入不带0x 前缀的十六进制值。默认为空。
    BIT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Bit字段中的默认值默认为空。
    CHAR Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Char字段中的默认值默认为空。
    DATE Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Date字段中的默认值默认为空。
    DATETIME Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Datetime字段中的默认值默认为空。
    DATETIME2 Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Datetime2字段中的默认值默认为空。
    DATETIMEOFFSET Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Dateimteoffset字段中的默认值默认为空。
    DECIMAL Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Decimal字段中的默认值默认为空。
    FLOAT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Float字段中的默认值默认为空。
    IMAGE Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Image字段中的默认值默认为空。
    INT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Int字段中的默认值默认为空。
    MONEY Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Money字段中的默认值默认为空。
    NCHAR Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Nchar字段中的默认值默认为空。
    NVARCHAR Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在NVarchar字段中的默认值默认为空。
    NTEXT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Ntext字段中的默认值默认为空。
    NUMERIC Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Numeric字段中的默认值默认为空。
    REAL Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Real字段中的默认值默认为空。
    SMALLINT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Smallint字段中的默认值默认为空。
    SMALLDATE Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Smalldate字段中的默认值默认为空。
    SMALLMONEY Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Smallmoney字段中的默认值默认为空。
    TEXT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Text字段中的默认值默认为空。
    TIME Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Time字段中的默认值默认为空。
    TINYINT Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Tinyint字段中的默认值默认为空。
    VARBINARY Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Varbinary字段中的默认值默认为空。
    VARCHAR Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Varchar字段中的默认值默认为空。
    XML Default 当忽略缺少的字段或字段包含无效的数据类型时, 存储在Xml字段中的默认值默认为空。
    Replace Newlines 用指定的字符替换换行符。
    Newline Replacement Character 用于替换换行符的字符。当选择“Replace Newlines”属性时可用。默认值为 |