全部產品
Search
文件中心

MaxCompute:資料類型正確性煙霧測試 (Smoke Test)

更新時間:Feb 28, 2024

本文為您介紹簡單的doc表與query表對系統的煙霧測試 (Smoke Test),觀察系統是否正常運行。

測試結論

Proxima CE目前支援的資料類型如下:
  • 只支援FLOATINT8BINARY 類型(對應aitheta2的FT_FP32FT_INT8FT_BINARY32)。
  • 不支援DOUBLEINT16類型(對應aitheta的FT_FP64FT_INT16)。

上述類型運行正常,後續考慮支援FLOAT16BINARY類型(對應aitheta的FT_FP16FT_BINARY64)。

測試過程

  1. 資料類型調研。
    proxima2的資料類型需要對應距離、轉換器等支援,如果對應的距離計算不支援,那麼該資料類型無實際實現。不同距離對不同資料類型的支援如下表:
    MeasureFT_FP16FT_FP32FT_FP64FT_INT8FT_INT16FT_INT4FT_BINARY32FT_BINARY64
    SquaredEuclidean✔️✔️✔️✔️✔️✔️
    Euclidean✔️✔️✔️✔️✔️✔️
    MipsEuclidean✔️✔️✔️✔️
    Geographical✔️✔️
    Canberra✔️✔️✔️
    Manhattan✔️✔️✔️✔️✔️✔️
    Chebyshev✔️✔️✔️
    InnerProduct✔️✔️✔️✔️
    Matching✔️✔️
    RussellRao✔️✔️
    RogersTanimoto✔️✔️
    Hamming✔️✔️
    說明 Geographical要求dimension為2。
  2. 資料準備。
    資料表資料資訊
    doc表
    • 非BINARY類型:8 dim,10 row,隨機數值。
    • BINARY類型:32 dim,9 row,只包含0和1的隨機數值。
    query表
    • 非BINARY類型:8 dim,3 row,隨機數值。
    • BINARY類型:32 dim,1 row,只包含0和1的隨機數值。
    資料產生指令碼:
    # 數值
    CREATE TABLE doc_table_float_0702(pk STRING, vector STRING) PARTITIONED BY (pt STRING);
    CREATE TABLE query_table_float_0702(pk STRING, vector STRING) PARTITIONED BY (pt STRING);
    ALTER TABLE doc_table_float_0702 add PARTITION(pt='20210702');
    ALTER TABLE query_table_float_0702 add PARTITION(pt='20210702');
    
    INSERT OVERWRITE TABLE doc_table_float_0702 PARTITION (pt='20210702') VALUES
    ('1.nid','1~1~1~1~1~1~1~1'),
    ('2.nid','2~2~2~2~2~2~2~2'),
    ('3.nid','3~3~3~3~3~3~3~3'),
    ('4.nid','4~4~4~4~4~4~4~4'),
    ('5.nid','5~5~5~5~5~5~5~5'),
    ('6.nid','6~6~6~6~6~6~6~6'),
    ('7.nid','7~7~7~7~7~7~7~7'),
    ('8.nid','8~8~8~8~8~8~8~8'),
    ('9.nid','9~9~9~9~9~9~9~9'),
    ('10.nid','10~10~10~10~10~10~10~10');
    SELECT * FROM doc_table_float_0702;
    
    INSERT OVERWRITE TABLE query_table_float_0702 PARTITION (pt='20210702') VALUES
    ('q1.nid','1~1~1~1~2~2~2~2'),
    ('q2.nid','4~4~4~4~3~3~3~3'),
    ('q3.nid','9~9~9~9~5~5~5~5');
    SELECT * FROM query_table_float_0702;
    
    # binary
    CREATE TABLE doc_table_binary_0706(pk STRING, vector STRING) PARTITIONED BY (pt STRING);
     ALTER TABLE doc_table_binary_0706 add PARTITION(pt='20210706');
     INSERT OVERWRITE TABLE doc_table_binary_0706 PARTITION (pt='20210706') VALUES
     ('1.nid','0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('2.nid','0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('3.nid','0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('4.nid','0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('5.nid','0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('6.nid','0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('7.nid','0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('8.nid','0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'),
    ('9.nid','0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1');
     SELECT * FROM doc_table_binary_0706;
    
     CREATE TABLE query_table_binary_0706(pk STRING, vector STRING) PARTITIONED BY (pt STRING);
     ALTER TABLE query_table_binary_0706 add PARTITION(pt='20210706');
     INSERT OVERWRITE TABLE query_table_binary_0706 PARTITION (pt='20210706') VALUES
     ('q1.nid','1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1');
     SELECT * FROM query_table_binary_0706;
  3. 運行指令碼。
    以FLOAT類型為例,其他類型類似。
    jar -Dorg.bytedeco.javacpp.logger.debug=true -resources  proxima2_ce_linux.jar
     -classpath http://schedule@{env}inside.cheetah.alibaba-inc.com/scheduler/res?id=179763045
    com.alibaba.proxima2.ce.CentauriRunner
    -doc_table doc_table_float_0702
    -doc_table_partition 20210702
    -query_table query_table_float_0702
    -query_table_partition 20210702
    -output_table output_table_float_0702
    -output_table_partition 20210702
    -data_type float
    -dimension 8
    -app_id 201220
    -topk 3;