すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:データ型の正確性に関するSmokeテスト

最終更新日:Jan 07, 2025

このトピックでは、docテーブルとクエリテーブルでスモークテストを実行して、システムが期待どおりに実行されるかどうかを確認する方法について説明します。

テストの結論

データ型のサポート:

  • Proxima CEは、FLOATINT8、およびBINARYデータ型のみをサポートします。 これらのデータ型は、それぞれaiteta2のFT_FP32FT_INT8、およびFT_BINARY32データ型に対応します。

  • Proxima CEは、DOUBLEおよびINT16データ型をサポートしていません。 これらのデータ型は、それぞれ、α θ のFT_FP64およびFT_INT16データ型に対応する。

Proxima CEは、前述のサポートされているデータ型を期待どおりに使用できます。 Proxima CEは、今後、FLOAT16およびBINARYデータ型をサポートする予定です。 これらのデータ型は、それぞれaithetaのFT_FP16およびFT_BINARY64データ型に対応します。

テスト手順

  1. さまざまな距離メジャータイプでサポートされているデータタイプを学習します。

    Proxima2のデータ型の実装は、距離測定タイプやコンバータなどの特定の要因によって決まります。 データ型が関連する距離メジャー型でサポートされていない場合、そのデータ型はProxima2で使用できません。 次の表に、さまざまな距離メジャータイプでサポートされている、またはサポートされていないデータタイプを示します。

    距離測定タイプ

    FT_FP16

    FT_FP32

    FT_FP64

    FT_INT8

    FT_INT16

    FT_INT4

    FT_BINARY32

    FT_BINARY64

    SquaredEuclidean

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    Euclidean

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    MipsEuclidean

    ✔️

    ✔️

    ✔️

    ✔️

    Geographical

    ✔️

    ✔️

    Canberra

    ✔️

    ✔️

    ✔️

    Manhattan

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    ✔️

    Chebyshev

    ✔️

    ✔️

    ✔️

    InnerProduct

    ✔️

    ✔️

    ✔️

    ✔️

    Matching

    ✔️

    ✔️

    RussellRao

    ✔️

    ✔️

    RogersTanimoto

    ✔️

    ✔️

    Hamming

    ✔️

    ✔️

    説明

    距離測定タイプが地理的である場合、次元の数は2でなければなりません。

  2. データを準備します。

    データテーブル

    説明

    docテーブル

    • BINARY以外のデータ型: 8列10行のランダム値

    • BINARYデータ型: 32列9行の範囲で0と1のみを含むランダムな値

    クエリ表

    • BINARY以外のデータ型: 8列3行のランダム値

    • BINARYデータ型: 32列1行の範囲で0と1のみを含むランダムな値

    データ生成スクリプト:

    # Values
    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;