全部產品
Search
文件中心

Platform For AI:KV2Table

更新時間:Oct 18, 2024

您可以使用KV2Table轉化KV(Key:Value)格式的表為普通表格式。Key轉換成表的某列名,Value轉成該列在對應行的值。

背景資訊

KV表格式定義:Key是列名的index,Value支援BIGINT和DOUBLE類型。在該組件中可以輸入使用者定義的key_map表,是列名和Key的映射,但無論是否輸入key_map表,該組件都會輸出key_map表記錄轉化後的列名和Key的映射。例如1:10,2:20和3:30。

key_map表格式定義:包含列名和index的映射以及類型資訊的col_namecol_indexcol_datatype,這三列類型要求是STRING,當col_datatype缺失時,預設值為double類型。

col_name

col_index

col_datatype

col1

1

bigint

col2

2

double

組件配置

您可以使用以下任意一種方式,配置KV2Table組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數

描述

欄位設定

KV列名

KV列名。

附加列名

附加列名。

key和value之間分隔字元

Key和Value之間分隔字元。預設”:”。

kv對之間分隔字元

KV對之間分隔字元。預設”,”

參數設定

是否只截取前1200列

如果轉化後列數超過表最大列數1200列後,是否只截取前1200列。

執行調優

計算核心數

系統根據輸入資料量,自動分配訓練的執行個體數量。

每個核記憶體大小

系統根據輸入資料量,自動分配記憶體。單位為MB。

方式二:PAI命令方式

使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

PAI -name KVToTable
    -project algo_public
    -DinputTableName=test
    -DoutputTableName=test_out
    -DoutputKeyMapTableName=test_keymap_out
    -DkvColName=kv;

參數名稱

是否必選

參數描述

預設值

inputTableName

輸入表的表名。

kvColName

KV列名。

outputTableName

輸出結果表。

outputKeyMapTableName

輸出索引表名。

inputKeyMapTableName

輸入索引表名。

appendColName

附加列名。

inputTablePartitions

輸入表中,參與訓練的分區。支援以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多級格式

說明

如果指定多個分區,則使用英文逗號(,)分隔。

所有分區

kvDelimiter

Key和Value之間分隔字元。

預設”:”

itemDelimiter

KV對之間分隔字元。

預設”,”

top1200

是否只截取前1200列:

  • true

  • false

true

lifecycle

輸出表的生命週期,取值範圍為[1, 3650]。

coreNum

計算的核心數目,取值為正整數。

系統自動分配

memSizePerCore

每個核心的記憶體(單位是兆),取值範圍為(100,64*1024)

系統自動分配

樣本

  • 資料產生

    drop table if exists test;
    create table test as
    select * from
        (
            select '1:1,2:2,3:-3.3' as kv union all
            select '1:10,2:20,3:-33.3' as kv
        ) tmp;
  • PAI命令列

     PAI -name KVToTable
        -project algo_public
        -DinputTableName=test
        -DoutputTableName=test_out
        -DoutputKeyMapTableName=test_keymap_out
        -DkvColName=kv;
  • 輸出說明

    • 輸出表

      +------------+------------+------------+
      | kv_1       | kv_2       | kv_3       |
      +------------+------------+------------+
      | 1.0        | 2.0        | -3.3       |
      | 10.0       | 20.0       | -33.3      |
      +------------+------------+------------+
    • 輸出映射表

      +------------+------------+------------+
      | col_name   | col_index  | col_type   |
      +------------+------------+------------+
      | kv_1       | 1          | double     |
      | kv_2       | 2          | double     |
      | kv_3       | 3          | double     |
      +------------+------------+------------+

演算法規模

轉化後的列包含Append列和KV轉化的列,先輸出KV列再輸出Append列。當總列數超過最大列數限制,且輸出top1200選項為True時,則輸出最大列數,否則報錯,目前輸出表的最大列數為1200列。

資料量不超過1億條記錄。

常見問題

  • Q:如果有輸入key_map表,則轉化的列內容是什嗎?

    A:轉化的列是key_map表中的Key和KV表中的Key的交集。

  • Q:如果有輸入key_map表,則轉化後的Key列類型是什嗎?

    A:轉化後key列類型和key_map表中一致。如果key_map表無類型,則轉化後key列類型為DOUBLE。

  • Q:如果有輸入key_map表,則轉化後key列名稱的命名規則是什嗎?

    A:命名規則為kv列的列名+“”+key

    不支援以下字元:

    %&()*+-./;<>=?

  • Q:列名衝突原因是什嗎?

    A:如果指定了Append列,且Append列名和轉化後Key列名相同,則會報錯。

  • Q:轉化的列支援什麼類型?

    A:只支援數實值型別。

  • Q:列名長度超過128個字元時怎麼辦?

    A:列名會被截斷成128個字元。

  • Q:同一行有重複Key時,如何處理?

    A:需要將Value值相加。