AnalyticDB for MySQL では、Spark SQL を使用して C-Store テーブルを作成できます。C-Store テーブルは XUANWU テーブルエンジンを使用します。このトピックでは、Spark SQL を使用して C-Store テーブルを作成するための構文、例、およびデータ型のマッピングについて説明します。
背景情報
AnalyticDB for MySQL で C-Store テーブルを作成するための Spark SQL 構文は、AnalyticDB for MySQL が独自のテーブルプロパティをサポートしているため、オープンソースの Spark SQL の構文とは異なります。詳細については、「パラメーター」をご参照ください。ただし、AnalyticDB for MySQL は、データベースの作成とデータのクエリに関して、オープンソースの Spark と同じ Spark SQL 構文を使用します。詳細については、「オープンソースの Spark SQL リファレンスドキュメント」をご参照ください。
制限事項
Spark SQL を使用して作成できるのは、XUANWU テーブルエンジンを使用するテーブルのみです。
構文
CREATE TABLE [ IF NOT EXISTS ] table_identifier
[ ( column_name column_type [ COMMENT col_comment1 ], ... ) ]
USING adb
[ COMMENT table_comment ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]パラメーター
パラメーター | 必須 | 説明 | |
table_identifier | はい | テーブルの名前。異なるデータベースで同じ名前を持つテーブルを区別するには、テーブル名を テーブルの命名規則の詳細については、「命名規則」をご参照ください。 | |
column_name | はい | 列の名前。 列の命名規則の詳細については、「命名規則」をご参照ください。 | |
column_type | はい | 列のデータ型。 Spark SQL がサポートするデータ型の詳細については、「データ型のマッピング」をご参照ください。 | |
USING adb | はい | AnalyticDB for MySQL テーブルが作成されることを指定します。 | |
COMMENT | はい | テーブルのコメント。 | |
TBLPROPERTIES | distributeType | はい | 分散キーのタイプ。有効値:
|
distributeColumns | はい | 分散キー (ハッシュパーティション)。分散キーとして複数のフィールドを使用できます。テーブルの作成後に分散キーを変更することはできません。 | |
storagePolicy | はい | ストレージポリシー。有効値:
説明 HOT、COLD、MIXED は大文字と小文字を区別しません。 | |
hotPartitionCount | はい | MIXED ストレージポリシーを使用する場合のホットパーティションの数。パーティションは、パーティションキーの値の降順でソートされます。最初の N 個のパーティションはホットパーティションで、他のパーティションはコールドパーティションです。 MIXED ストレージポリシーを選択した場合は、ホットパーティションの数も指定する必要があります。MIXED 以外のストレージポリシーを選択した場合、 説明 N は正の整数です。 | |
indexName | いいえ | インデックスの名前。複数のインデックスはコンマ (,) で区切ります。例: | |
indexType | いいえ | インデックスのタイプ。有効値:
例: | |
indexColumn | いいえ | インデックス付き列。 例: | |
indexAll | いいえ | すべての列にインデックスを付けるかどうかを指定します。
| |
primaryKey | いいえ | プライマリキーインデックス。 プライマリキーには、分散キーとパーティションキーを含める必要があります。複合プライマリキーの先頭に分散キーとパーティションキーを配置することをお勧めします。 | |
partitionType | いいえ | パーティションキーのタイプ。これを VALUE に設定します。 | |
partitionColumn | いいえ | パーティションキー (サブパーティション)。 | |
partitionCount | いいえ | サブパーティションのライフサイクル。 パーティションキーを指定する場合は、 たとえば、パーティションキー列が日時型の場合、 | |
tableEngineName | いいえ | ストレージエンジン。デフォルト値は XUANWU です。 | |
例
非パーティションテーブルの作成
CREATE TABLE orders (
order_id BIGINT NOT NULL COMMENT '注文 ID',
customer_id INT NOT NULL COMMENT '顧客 ID',
order_status STRING NOT NULL COMMENT '注文ステータス',
total_price BIGINT NOT NULL COMMENT '注文金額',
order_date TIMESTAMP NOT NULL COMMENT '注文日'
)
using adb
TBLPROPERTIES (
'distributeType' = 'HASH',
'distributeColumns' = 'order_status',
'storagePolicy' = 'COLD'
); パーティションテーブルを作成してライフサイクルを設定する
CREATE TABLE customer (
customer_id BIGINT NOT NULL COMMENT '顧客 ID',
customer_name STRING NOT NULL COMMENT '顧客名',
phone_num BIGINT NOT NULL COMMENT '電話番号',
city_name STRING NOT NULL COMMENT '都市',
sex INT NOT NULL COMMENT '性別',
id_number STRING NOT NULL COMMENT 'ID カード番号',
home_address STRING NOT NULL COMMENT '自宅住所',
office_address STRING NOT NULL COMMENT '勤務先住所',
age INT NOT NULL COMMENT '年齢',
login_time TIMESTAMP NOT NULL COMMENT 'ログオン時間'
)
using adb
TBLPROPERTIES (
'distributeType' = 'HASH',
'primaryKey'= 'customer_id,phone_num,city_name',
'distributeColumns' = 'city_name',
'partitionType' = 'value',
'partitionColumn' = 'city_name',
'partitionCount' = 100,
'indexAll' = 'N',
'storagePolicy' = 'COLD'
); データ型のマッピング
Spark SQL 列の型 | XIHE SQL 列の型 |
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
INTEGER | INTEGER |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
BINARY | BINARY |
DATE | DATE |
STRING |
|
TIMESTAMP |
|