本文为您介绍Table Store(OTS) Writer支持的数据类型、写入方式、字段映射和数据源等参数及配置示例。

表格存储(Table Store)是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实时访问。Table Store以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。

Table Store Writer通过Table Store官方Java SDK连接到Table Store服务端,并通过SDK写入Table Store服务端 。Table Store Writer本身对于写入过程进行诸多优化,包括写入超时重试、异常写入重试、批量提交等功能。

目前Table Store Writer支持所有Table Store类型,其针对Table Store类型的转换列表,如下所示。
类型分类 Table Store数据类型
整数类 INTEGER
浮点类 DOUBLE
字符串类 STRING
布尔类 BOOLEAN
二进制类 BINARY
说明 您需要将INTEGER类型的数据,在脚本模式中配置为INT类型,DataWorks会将其转换为INTEGER类型。如果您直接配置为INTEGER类型,日志将会报错,导致任务无法顺利完成。

参数说明

参数 描述 是否必选 默认值
datasource 数据源名称,脚本模式支持添加数据源,该配置项填写的内容必须与添加的数据源名称保持一致。
endPoint Table Store Server的服务地址。
accessId Table Store的AccessKey ID。
accessKey Table Store的AccessKey Secret。
instanceName Table Store的实例名称。

实例是您使用和管理Table Store服务的实体。开通Table Store服务后,需要通过管理控制台创建实例后,在实例内进行表的创建和管理。实例是Table Store资源管理的基础单元,Table Store对应用程序的访问控制和资源计量都在实例级别完成。

table 所选取的需要抽取的表名称,此处能且只能填写一张表。在Table Store中不存在多表同步的需求。
primaryKey Table Store的主键信息,使用JSON的数组描述字段信息。Table Store本身是NoSQL系统,在Table Store Writer导入数据过程中,必须指定相应的字段名称。
说明 Table Store的PrimaryKey仅支持STRING和INT两种类型,因此Table Store Writer本身也限定填写上述两种类型。
数据同步系统本身支持类型转换的,因此对于源头数据非STRING/INT,Table Store Writer会进行数据类型转换。配置示例如下。
"primaryKey" : [
    {"name":"pk1", "type":"string"},
    {"name":"pk2", "type":"int"}
                    ],
column 所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。

使用格式为:

{"name":"col2", "type":"INT"},

其中的name指定写入的Table Store列名,type指定写入的类型。Table Store类型支持STRING、INT、DOUBLE、BOOL和BINARY类型。

writeMode
writeMode表示数据写入表格存储的格式,目前支持以下两种模式:
  • PutRow:对应于Table Store PutRow API,插入数据到指定的行。如果该行不存在,则新增一行。如果该行存在,则覆盖原有行。
  • UpdateRow:对应于Table Store UpdateRow API,更新指定行的数据。如果该行不存在,则新增一行。如果该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。
requestTotalSizeLimitation 该配置限制写入Table Store时单行数据的大小,配置类型为数字。 1MB
attributeColumnSizeLimitation 该配置限制写入Table Store时单个属性列的大小,配置类型为数字。 2MB
primaryKeyColumnSizeLimitation 该配置限制写入Table Store时单个主键列的大小,配置类型为数字。 1KB
attributeColumnMaxCount 该配置限制写入Table Store时属性列的个数,配置类型为数字。 1,024

向导开发介绍

暂不支持向导模式开发。

脚本开发介绍

配置一个写入Table Store作业,使用脚本模式开发的详情请参见通过脚本模式配置任务
{
    "type":"job",
    "version":"2.0",//版本号。
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ots",//插件名。
            "parameter":{
                "datasource":"",//数据源。
                "column":[//字段。
                    {
                        "name":"columnName1",//字段名。
                        "type":"INT"//数据类型。
                    },
                    {
                        "name":"columnName2",
                        "type":"STRING"
                    },
                    {
                        "name":"columnName3",
                        "type":"DOUBLE"
                    },
                    {
                        "name":"columnName4",
                        "type":"BOOL"
                    },
                    {
                        "name":"columnName5",
                        "type":"BINARY"
                    }
                ],
                "writeMode":"",//写入模式。
                "table":"",//表名。
                "primaryKey":[//Table Store的主键信息。
                    {
                        "name":"pk1",
                        "type":"STRING"
                    },
                    {
                        "name":"pk2",
                        "type":"INT"
                    }
                ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//错误记录数。
        },
        "speed":{
            "throttle":false,//false代表不限流,下面的限流速度不生效;true代表限流。
            "concurrent":1//作业并发数。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}