全部產品
Search
文件中心

Platform For AI:三元組轉kv

更新時間:Jul 13, 2024

本文為您介紹Designer提供的三元組轉kv演算法組件。

三元組轉kv演算法組件用於將三元組表(row,col,value)轉換為kv表(row,[col_id:value])

三元組(row,col,value)表的資料類型為“XXD”或“XXL”,“X”表示任意資料類型,“D”表示DOUBLE資料類型,“L”表示BIGINT資料類型。轉換為kv表後,row和value的資料類型與原始輸入資料類型一致,col_id是BIGINT資料類型,並輸出col的索引表映射到col_id。

轉換樣本如下。

  • 三元組表如下。

    id

    word

    count

    01

    a

    10

    01

    b

    20

    01

    c

    30

  • 輸出kv表如下。

    id

    key_value

    01

    1:10;2:20;3:30

    說明

    key_value中key和value、kv對之間的分隔字元可自訂。

  • 輸出索引表如下。

    key

    key_id

    a

    1

    b

    2

    c

    3

Designer支援通過可視化或PAI命令方式,配置三元組轉kv演算法組件相關參數。

組件配置

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

方式一:可視化方式

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

頁簽

參數

描述

欄位設定

轉成kv表時保持不變的列名

指定轉換為kv表時,保持不變的列名稱。

輸出kv中的key

kv表中的key。

輸出kv中的value

kv表中key的值。

輸入索引表key的列名

索引表中key的列名。

輸入索引表key索引號的列名

索引表中索引號的列名。

key和value之間分隔字元

kv表中key和value之間的分隔字元。預設值為冒號(:)。

kv對之間分隔字元

kv對之間的分隔字元。預設值為英文逗號(,)。

執行調優

指定執行個體總數

指定Instance總數。取值範圍為正整數。系統預設會根據輸入資料量大小計算。

指定記憶體(單位MB)

指定記憶體總數。取值範圍為正整數。系統預設會根據輸入資料量大小計算。

方式二:PAI命令方式

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

PAI -name triple_to_kv
    -project algo_public
    -DinputTableName=test_data
    -DoutputTableName=test_kv_out
    -DindexOutputTableName=test_index_out
    -DidColName=id
    -DkeyColName=word
    -DvalueColName=count
    -DinputTablePartitions=ds=test1
    -DindexInputTableName=test_index_input
    -DindexInputKeyColName=word
    -DindexInputKeyIdColName=word_id
    -DkvDelimiter=:
    -DpairDelimiter=;
    -Dlifecycle=3

參數名稱

是否必選

描述

預設值

inputTableName

輸入表的名稱。

idColName

指定轉換為kv表時,保持不變的列名稱。

keyColName

kv表中的key。

valueColName

kv表中key的值。

outputTableName

輸出kv表的名稱。

indexOutputTableName

輸出索引表的名稱。

indexInputTableName

輸入已有的索引表的名稱。不可為空表。

indexInputKeyColName

索引表中key的列名。配置indexInputTableName後,必須配置該參數。

indexInputKeyIdColName

索引表中索引號的列名。配置indexInputTableName後,必須配置該參數。

inputTablePartitions

輸入表的分區名稱,只能輸入單個分區。

kvDelimiter

kv表中key和value之間的分隔字元。

冒號(:)

pairDelimiter

kv對之間的分隔字元。

英文逗號(,)

lifecycle

輸出表的生命週期。

coreNum

指定Instance總數。取值為正整數。

系統預設會根據輸入資料量大小計算

memSizePerCore

指定記憶體總數。取值為正整數。

系統預設會根據輸入資料量大小計算

樣本

  • 輸入資料

    drop table if exists triple2kv_test_input;
    create table triple2kv_test_input as
    select
      *
    from
    (
      select '01' as id, 'a' as word, 10 as count
        union all
          select '01' as id, 'b' as word, 20 as count
        union all
          select '01' as id, 'c' as word, 30 as count
        union all
          select '02' as id, 'a' as word, 100 as count
        union all
          select '02' as id, 'd' as word, 200 as count
        union all
          select '02' as id, 'e' as word, 300 as count
    ) tmp;
  • 運行PAI命令

    PAI -name triple_to_kv
        -project algo_public
        -DinputTableName=triple2kv_test_input
        -DoutputTableName=triple2kv_test_input_out
        -DindexOutputTableName=triple2kv_test_input_index_out
        -DidColName=id
        -DkeyColName=word
        -DvalueColName=count
        -Dlifecycle=1;
  • 運行結果

    • 輸出triple2kv_test_input_out kv表

      +------------+------------+
      | id         | key_value  |
      +------------+------------+
      | 02         | 1:100;4:200;5:300 |
      | 01         | 1:10;2:20;3:30 |
      +------------+------------+
    • 輸出triple2kv_test_input_index_out索引表

      +------------+------------+
      | key        | key_id     |
      +------------+------------+
      | a          | 1          |
      | b          | 2          |
      | c          | 3          |
      | d          | 4          |
      | e          | 5          |
      +------------+------------+