Table2KV
本文為您介紹如何使用Table2KV轉(zhuǎn)化普通表為KV(Key:Value)格式的表。
使用限制
轉(zhuǎn)換后的結(jié)果表不會(huì)顯示原表中的空值。您可以在結(jié)果表中指定需要保留的列,并且輸出的列與原表的列一致。
如果存在輸入Key_map表,則轉(zhuǎn)化的列為Key_map表與KV表中Key的交集。
如果存在的輸入Key_map表與輸入表類型沖突,則輸出的Key_map表使用您指定的類型。
輸入表中需要轉(zhuǎn)換為KV的列只能為BIGINT或DOUBLE類型。
組件配置
您可以使用以下任意一種方式,配置Table2KV組件參數(shù)。
方式一:可視化方式
在Designer工作流頁(yè)面配置組件參數(shù)。
頁(yè)簽 | 參數(shù) | 描述 |
字段設(shè)置 | 轉(zhuǎn)換列 | 需要轉(zhuǎn)換的列名稱。 |
保持原樣列 | 不需要轉(zhuǎn)換的列名稱。 | |
key和value的分割符 | Key和Value之間的分割符。默認(rèn)為半角冒號(hào)(:)。 | |
kv間的分割符 | KV對(duì)之間的分割符。默認(rèn)為半角逗號(hào)(,)。 | |
參數(shù)設(shè)置 | 指定是否將列轉(zhuǎn)換為編號(hào) | 指定是否將列轉(zhuǎn)換為編號(hào),取值如下:
|
執(zhí)行調(diào)優(yōu) | 核心數(shù) | 系統(tǒng)根據(jù)輸入數(shù)據(jù)量,自動(dòng)分配訓(xùn)練的實(shí)例數(shù)量。 |
內(nèi)存數(shù) | 系統(tǒng)根據(jù)輸入數(shù)據(jù)量,自動(dòng)分配內(nèi)存。單位為MB。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請(qǐng)參見SQL腳本。
PAI -name TableToKV
-project algo_public
-DinputTableName=maple_tabletokv_basic_input
-DoutputTableName=maple_tabletokv_basic_output
-DselectedColNames=col0,col1,col2
-DappendColNames=rowid;
參數(shù)名稱 | 是否必選 | 參數(shù)描述 | 默認(rèn)值 |
inputTableName | 是 | 輸入表的表名稱。 | 無(wú) |
inputTablePartitions | 否 | 輸入表中指定參與訓(xùn)練的分區(qū),格式為 如果是多級(jí)分區(qū),格式為 如果指定多個(gè)分區(qū),則需要使用半角逗號(hào)(,)分隔。 | 默認(rèn)選擇所有分區(qū)。 |
selectedColNames | 否 | 選擇的列名稱,只能為BIGINT或DOUBLE類型。 | 默認(rèn)選擇整張表。 |
appendColNames | 否 | 需要保留的列名稱,該列會(huì)被原樣寫入至輸出表中。 | 無(wú) |
outputTableName | 是 | 輸出的KV表名稱。 | 無(wú) |
kvDelimiter | 否 | Key和Value的分割符。 | 半角冒號(hào)(:) |
itemDelimiter | 否 | KV間的分割符。默認(rèn)為半角逗號(hào)(,)。 | 半角逗號(hào)(,) |
convertColToIndexId | 否 | 指定是否將列轉(zhuǎn)換為編號(hào)。取值如下:
| 0 |
inputKeyMapTableName | 否 | 輸入的索引表名稱。 該參數(shù)僅當(dāng) | 半角引號(hào)(“”) |
outputKeyMapTableName | 由convertColToIndexId決定。 | 輸出的索引表名稱。當(dāng)且僅當(dāng)convertColToIndexId=1時(shí)該參數(shù)必選。 | 無(wú) |
lifecycle | 否 | 輸出表的生命周期。取值為正整數(shù)。 | 無(wú) |
coreNum | 否 | 節(jié)點(diǎn)個(gè)數(shù)。取值范圍為[1, 9999]的正整數(shù)。與memSizePerCore參數(shù)配對(duì)使用。 | 系統(tǒng)自動(dòng)分配。 |
memSizePerCore | 否 | 單個(gè)節(jié)點(diǎn)的內(nèi)存大小,單位為兆。取值范圍為[1024, 64*1024]的正整數(shù)。 | 系統(tǒng)自動(dòng)分配。 |
示例
數(shù)據(jù)生成
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;
輸出說(shuō)明
輸出表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