このトピックでは、Spark、Scala、および Tablestore の検索インデックスとテーブル間のデータ型と値型のマッピングについて説明します。これらのデータ型と値型を使用する場合は、Spark、Scala、および Tablestore のマッピング規則に従う必要があります。
基本データ型
次の表は、サポートされている基本データ型を示しています。
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) |
地理位置情報データ型
検索インデックスは地理クエリをサポートしています。地理クエリが計算レイヤーにプッシュダウンされると、Spark は基本的なデータ型に加えて、地理位置情報に基づいてデータをクエリおよび分析できます。
地理クエリは、地理距離クエリ、地理バウンディングボックスクエリ、および地理ポリゴンクエリのクエリタイプを提供します。地理クエリを使用して、IoT デバイスの位置、食品配達注文の位置、従業員の入退勤時の位置、速達配達注文の位置に関する情報をクエリできます。次の方法を使用して地理クエリを実行できます。
Tablestore の検索インデックスを使用します。詳細については、地理距離クエリを参照してください。
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、検索インデックス、およびテーブルでサポートされている地理位置情報データ型を示しています。
Spark のデータ型 | Scala の値型 | 検索インデックスのデータ型 | テーブルのデータ型 |
---|---|---|---|
String JSON (円形地理領域の中心点の座標と半径) | String (JSON) | Geopoint | STRING (JSON) |
STRING JSON (長方形の地理領域の頂点の座標) | String (JSON) | Geopoint | STRING (JSON) |
String JSON (多角形の地理領域の頂点の座標) | String (JSON) | Geopoint | STRING (JSON) |