使用Spark計算引擎訪問表格存儲時,您需要了解Spark數據類型、Scala中的值類型、表格存儲中多元索引數據類型和表格存儲表中數據類型的對應關系。使用過程中請確保Spark、Scala和表格存儲中字段或值的數據類型相匹配。
基礎數據類型
基礎數據類型的支持情況請參見下表。
Spark數據類型 | Scala中的值類型 | 多元索引數據類型 | 表中數據類型 |
ByteType | Byte | Long | Integer |
ShortType | Short | Long | Integer |
IntegerType | Int | Long | Integer |
LongType | Long | Long | Integer |
FloatType | Float | Double | Double |
DoubleType | Double | Double | Double |
StringType | String | Keyword/Text | String |
BinaryType | Array[Byte] | Binary | Binary |
BooleanType | Boolean | Boolean | Boolean |
地理坐標(String JSON) | String(JSON) | Geopoint | String(JSON) |
地理位置類型(Geopoint類型)
多元索引支持地理位置查詢方式,將其提供到計算層,使Spark在能查詢分析基礎類型數據的同時,也可以結合地理位置對數據進行查詢分析。
地理位置查詢包括地理距離查詢、地理矩形查詢和地理多邊形范圍查詢三種查詢方式。地理位置查詢廣泛應用于物聯網設備位置信息、騎手訂單、打卡位置信息、快遞地理信息等場景中。使用方式如下:
使用表格存儲的多元索引查詢,詳情請參見地理距離查詢。
使用Spark SQL方式查詢。
地理半徑圓查詢
select * from table where val_geo = '{"centerPoint":"3,0", "distanceInMeter": 100000}' and name like 'ali%'
地理矩形查詢
select * from table where geo = '{"topLeft":"8,0", "bottomRight": "0,10"}' and id in { 123 , 321 }
地理多邊形查詢
select * from table where geo = '{"points":["5,0", "5,1", "6,1", "6,10"]}'
地理位置數據類型的支持情況請參見下表。
Spark數據類型 | Scala中的值類型 | 多元索引數據類型 | 表中數據類型 |
地理坐標(String JSON)半徑圓 | String(JSON) | Geopoint | STRING(JSON) |
地理坐標(String JSON)矩形 | String(JSON) | Geopoint | STRING(JSON) |
地理坐標(String JSON)多邊形 | String(JSON) | Geopoint | STRING(JSON) |