本文为您介绍简单的doc表与query表对系统的冒烟测试,观察系统是否正常运行。
测试结论
Proxima CE目前支持的数据类型如下:
- 只支持
FLOAT
、INT8
、BINARY
类型(对应aitheta2的FT_FP32
、FT_INT8
、FT_BINARY32
)。 - 不支持
DOUBLE
、INT16
类型(对应aitheta的FT_FP64
、FT_INT16
)。
上述类型运行正常,后续考虑支持FLOAT16
和BINARY
类型(对应aitheta的FT_FP16
和FT_BINARY64
)。
测试过程
- 数据类型调研。proxima2的数据类型需要对应距离、转换器等支持,如果对应的距离计算不支持,那么该数据类型无实际实现。不同距离对不同数据类型的支持如下表:
Measure 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 ❌ ❌ ❌ ❌ ❌ ❌ ✔️ ✔️ 说明 Geographical要求dimension为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;
- 运行脚本。以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;