Table to KV是一种用于将普通表格数据转换为键值对(KV)格式的算法。该算法通过提取表格中的数据并将其结构化为Key:Value格式,便于数据存储和检索,提高数据处理的灵活性和效率。
使用限制
转换后的结果表不会显示原表中的空值。您可以在结果表中指定需要保留的列,并且输出的列与原表的列一致。
如果存在输入Key_map表,则转化的列为Key_map表与KV表中Key的交集。
如果存在的输入Key_map表与输入表类型冲突,则输出的Key_map表使用您指定的类型。
输入表中需要转换为KV的列只能为BIGINT或DOUBLE类型。
配置组件
方式一:可视化方式
在Designer工作流页面添加Table to KV组件,并在界面右侧配置相关参数:
参数类型 | 参数 | 描述 |
参数类型 | 参数 | 描述 |
字段设置 | 转换列 | 需要转换的列名称。 |
保持原样列 | 不需要转换的列名称。 | |
key和value的分割符 | Key和Value之间的分割符。默认为半角冒号(:)。 | |
kv间的分割符 | KV对之间的分割符。默认为半角逗号(,)。 | |
参数设置 | 指定是否将列转换为编号 | 指定是否将列转换为编号,取值如下:
|
执行调优 | 核心数 | 系统根据输入数据量,自动分配训练的实例数量。 |
内存数 | 系统根据输入数据量,自动分配内存。单位为MB。 |
方式二:PAI命令方式
使用PAI命令配置Table to KV组件参数。您可以使用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 | 否 | 默认选择所有分区。 | 输入表中指定参与训练的分区,格式为 如果是多级分区,格式为 如果指定多个分区,则需要使用半角逗号(,)分隔。 |
selectedColNames | 否 | 默认选择整张表。 | 选择的列名称,只能为BIGINT或DOUBLE类型。 |
appendColNames | 否 | 无 | 需要保留的列名称,该列会被原样写入至输出表中。 |
outputTableName | 是 | 无 | 输出的KV表名称。 |
kvDelimiter | 否 | 半角冒号(:) | Key和Value的分割符。 |
itemDelimiter | 否 | 半角逗号(,) | KV间的分割符。默认为半角逗号(,)。 |
convertColToIndexId | 否 | 0 | 指定是否将列转换为编号。取值如下:
|
inputKeyMapTableName | 否 | 半角引号(“”) | 输入的索引表名称。 该参数仅当 |
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
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
col_name
col_index
col_datatype
col0
0
bigint
col1
1
double
col2
2
bigint
- 本页导读 (1)
- 使用限制
- 配置组件
- 方式一:可视化方式
- 方式二:PAI命令方式
- 示例