本文为您介绍简单的doc表与query表对系统的冒烟测试,观察系统是否正常运行。

测试结论

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;