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

使用限制

  • 转换后的结果表不会显示原表中的空值。您可以在结果表中指定需要保留的列,并且输出的列与原表的列一致。
  • 如果存在输入Key_map表,则转化的列为Key_map表与KV表中Key的交集。
  • 如果存在的输入Key_map表与输入表类型冲突,则输出的Key_map表使用您指定的类型。
  • 输入表中需要转换为KV的列只能为BIGINT或DOUBLE类型。

Table2KV

PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数,如下所示:
  • 可视化方式
    页签 参数 描述
    字段设置 转换列 需要转换的列名称。
    保持原样列 不需要转换的列名称。
    key和value的分割符 Key和Value之间的分割符。默认为:
    kv间的分割符 KV对之间的分割符。默认为,
    参数设置 指定是否将列转换为编号 指定是否将列转换为编号,取值如下:
    • 转换
    • 不转换
    执行调优 核心数 系统根据输入数据量,自动分配训练的实例数量。
    内存数 系统根据输入数据量,自动分配内存。单位为MB。
  • PAI命令方式
    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 选择的列名称,只能为BIGINT或DOUBLE类型。 默认选择整张表。
    appendColNames 需要保留的列名称,该列会被原样写入至输出表中。
    outputTableName 输出的KV表名称。
    kvDelimiter Key和Value的分割符。 默认为:
    itemDelimiter KV间的分割符。 默认为,
    convertColToIndexId 指定是否将列转换为编号。取值如下:
    • 1为转换。
    • 0为不转换。
    默认为0
    inputKeyMapTableName 输入的索引表名称。

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

    默认为””
    outputKeyMapTableName convertColToIndexId决定。 输出的索引表名称。当且仅当convertColToIndexId=1时该参数必选。
    lifecycle 输出表的生命周期。取值为正整数。
    coreNum 节点个数。取值范围为[1, 9999]的正整数。与memSizePerCore参数配对使用。 系统自动分配。
    memSizePerCore 单个节点的内存大小,单位为兆。取值范围为[1024, 64*1024]的正整数。 系统自动分配。

示例一

  • 数据生成
    rowid kv
    0 col0:1,col1:1.1,col2:2
    1 col0:0,col1:1.2,col2:3
    2 col0:1,col1:2.3
    3 col0:1,col1:0.0,col2:4
  • PAI命令行
    PAI -name TableToKV
        -project algo_public
        -DinputTableName=maple_tabletokv_basic_input
        -DoutputTableName=maple_tabletokv_basic_output
        -DselectedColNames=col0,col1,col2
        -DappendColNames=rowid;
  • 输出说明
    输出表maple_tabletokv_basic_output
    rowid:bigint kv:string
    0 1:1.1,2:2
    1 1:1.2,2:3
    2 1:2.3
    3 1:0.0,2:4

示例二

  • PAI命令行
    PAI -name TableToKV
        -project projectxlib4 -DinputTableName=maple_tabletokv_basic_input
        -DoutputTableName=maple_tabletokv_basic_output
        -DselectedColNames=col0,col1,col2 -DappendColNames=rowid
        -DconvertColToIndexId=1
        -DinputKeyMapTableName=maple_test_tabletokv_basic_map_input
        -DoutputKeyMapTableName=maple_test_tabletokv_basic_map_output;
  • 输出说明
    输出表maple_test_tabletokv_basic_map_output
    col_name:string col_index:string col_datatype:string
    col1 1 bigint
    col2 2 double