本文為您介紹如何使用Table2KV轉化普通表為KV(Key:Value)格式的表。
使用限制
轉換後的結果表不會顯示原表中的空值。您可以在結果表中指定需要保留的列,並且輸出的列與原表的列一致。
如果存在輸入Key_map表,則轉化的列為Key_map表與KV表中Key的交集。
如果存在的輸入Key_map表與輸入表類型衝突,則輸出的Key_map表使用您指定的類型。
輸入表中需要轉換為KV的列只能為BIGINT或DOUBLE類型。
組件配置
您可以使用以下任意一種方式,配置Table2KV組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 轉換列 | 需要轉換的列名稱。 |
保持原樣列 | 不需要轉換的列名稱。 | |
key和value的分割符 | Key和Value之間的分割符。預設為半形冒號(:)。 | |
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 | 否 | 輸入表中指定參與訓練的分區,格式為 如果是多級分區,格式為 如果指定多個分區,則需要使用半形逗號(,)分隔。 | 預設選擇所有分區。 |
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
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