本文為您介紹簡單的doc表與query表對系統的煙霧測試 (Smoke Test),觀察系統是否正常運行。
測試結論
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;