本文为您介绍如何使用Table2KV转化普通表为KV(Key:Value)格式的表。

使用限制

  • 转换后的结果表不会显示原表中的空值。您可以在结果表中指定需要保留的列,并且输出的列与原表的列一致。

  • 如果存在输入Key_map表,则转化的列为Key_map表与KV表中Key的交集。

  • 如果存在的输入Key_map表与输入表类型冲突,则输出的Key_map表使用您指定的类型。

  • 输入表中需要转换为KV的列只能为BIGINTDOUBLE类型。

组件配置

您可以使用以下任意一种方式,配置Table2KV组件参数。

方式一:可视化方式

Designer工作流页面配置组件参数。

页签

参数

描述

字段设置

转换列

需要转换的列名称。

保持原样列

不需要转换的列名称。

keyvalue的分割符

KeyValue之间的分割符。默认为半角冒号(:)。

kv间的分割符

KV对之间的分割符。默认为半角逗号(,)。

参数设置

指定是否将列转换为编号

指定是否将列转换为编号,取值如下:

  • 转换

  • 不转换

执行调优

核心数

系统根据输入数据量,自动分配训练的实例数量。

内存数

系统根据输入数据量,自动分配内存。单位为MB。

方式二:PAI命令方式

使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本

PAI -name TableToKV
    -project algo_public
    -DinputTableName=maple_tabletokv_basic_input
    -DoutputTableName=maple_tabletokv_basic_output
    -DselectedColNames=col0,col1,col2
    -DappendColNames=rowid;

参数名称

是否必选

参数描述

默认值

inputTableName

输入表的表名称。

inputTablePartitions

输入表中指定参与训练的分区,格式为Partition_name=value

如果是多级分区,格式为name1=value1/name2=value2;

如果指定多个分区,则需要使用半角逗号(,)分隔。

默认选择所有分区。

selectedColNames

选择的列名称,只能为BIGINTDOUBLE类型。

默认选择整张表。

appendColNames

需要保留的列名称,该列会被原样写入至输出表中。

outputTableName

输出的KV表名称。

kvDelimiter

KeyValue的分割符。

半角冒号(:)

itemDelimiter

KV间的分割符。默认为半角逗号(,)。

半角逗号(,)

convertColToIndexId

指定是否将列转换为编号。取值如下:

  • 1为转换。

  • 0为不转换。

0

inputKeyMapTableName

输入的索引表名称。

该参数仅当convertColToIndexId=1时有效。如果未指定该参数,则程序自动计算一套编号。

半角引号(“”)

outputKeyMapTableName

convertColToIndexId决定。

输出的索引表名称。当且仅当convertColToIndexId=1时该参数必选。

lifecycle

输出表的生命周期。取值为正整数。

coreNum

节点个数。取值范围为[1, 9999]的正整数。与memSizePerCore参数配对使用。

系统自动分配。

memSizePerCore

单个节点的内存大小,单位为兆。取值范围为[1024, 64*1024]的正整数。

系统自动分配。

示例

  • 数据生成

    drop table if exists test;
    create table test as
    select * from
        (
            select 0 as rowid, 1 as col0, 1.1 as col1, 2 as col2 union all
            select 1 as rowid, 0 as col0, 1.2 as col1, 3 as col2 union all
            select 2 as rowid, 1 as col0, 2.3 as col1, 4 as col2 union all
            select 3 as rowid, 1 as col0, 0.0 as col1, 5 as col2
        ) tmp;
  • PAI命令行

    PAI -name TableToKV
        -project algo_public
        -DinputTableName=test
        -DoutputTableName=test_output
        -DselectedColNames=col0,col1,col2
        -DconvertColToIndexId=1
        -DoutputKeyMapTableName=test_key_map
        -DappendColNames=rowid;
  • 输出说明

    输出表test_output

    rowid

    kv

    0

    0:1,1:1.1,2:2

    1

    0:0,1:1.2,2:3

    2

    0:1,1:2.3,2:4

    3

    0:1,1:0,2:5

    输出表test_key_map

    col_name

    col_index

    col_datatype

    col0

    0

    bigint

    col1

    1

    double

    col2

    2

    bigint