すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:Spark SQL を使用して内部テーブルを作成する

最終更新日:Nov 09, 2025

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

はい

テーブルの名前。異なるデータベースで同じ名前を持つテーブルを区別するには、テーブル名を db_name.table_identifier フォーマットで指定します。

テーブルの命名規則の詳細については、「命名規則」をご参照ください。

column_name

はい

列の名前。

列の命名規則の詳細については、「命名規則」をご参照ください。

column_type

はい

列のデータ型。

Spark SQL がサポートするデータ型の詳細については、「データ型のマッピング」をご参照ください。

USING adb

はい

AnalyticDB for MySQL テーブルが作成されることを指定します。

COMMENT

はい

テーブルのコメント。

TBLPROPERTIES

distributeType

はい

分散キーのタイプ。有効値:

  • HASH: 標準テーブルの分散キーを定義します。テーブルは、選択された列のハッシュ値に基づいてシャーディングされます。

  • BROADCAST: レプリケートされたテーブルを定義します。レプリケートされたテーブルのコピーは、クラスターの各シャードに格納されます。このため、レプリケートされたテーブルが大きすぎないようにすることをお勧めします。

distributeColumns

はい

分散キー (ハッシュパーティション)。分散キーとして複数のフィールドを使用できます。テーブルの作成後に分散キーを変更することはできません。

storagePolicy

はい

ストレージポリシー。有効値:

  • HOT (デフォルト): ホットストレージ。すべてのデータパーティションはソリッドステートドライブ (SSD) に保存されます。このポリシーは最高のクエリパフォーマンスを提供し、高性能なアクセス要件を満たしますが、ストレージコストが最も高くなります。

  • COLD: コールドストレージ。すべてのパーティションは OSS に保存され、コスト効率の高いストレージポリシーである ゾーン冗長ストレージ (マルチ AZ) を使用します。

  • MIXED: ハイブリッドストレージ。ホットパーティションデータは SSD に保存され、コールドパーティションデータは OSS に保存されます。このポリシーは、ホットデータのクエリパフォーマンスを確保し、コールドデータのストレージコストを削減します。ホットパーティションの数を指定するには、hotPartitionCount を使用する必要があります。

説明

HOT、COLD、MIXED は大文字と小文字を区別しません。

hotPartitionCount

はい

MIXED ストレージポリシーを使用する場合のホットパーティションの数。パーティションは、パーティションキーの値の降順でソートされます。最初の N 個のパーティションはホットパーティションで、他のパーティションはコールドパーティションです。

MIXED ストレージポリシーを選択した場合は、ホットパーティションの数も指定する必要があります。MIXED 以外のストレージポリシーを選択した場合、hotPartitionCount=N プロパティは指定できません。

説明

N は正の整数です。

indexName

いいえ

インデックスの名前。複数のインデックスはコンマ (,) で区切ります。例: 'indexName'='index1,index2'

indexType

いいえ

インデックスのタイプ。有効値:

  • FULLTEXT: フルテキストインデックス。

  • NORMAL: 通常のインデックス。

例: 'indexType.index1'='FULLTEXT'

indexColumn

いいえ

インデックス付き列。

例: 'indexColumn.index1'='c1'

indexAll

いいえ

すべての列にインデックスを付けるかどうかを指定します。

  • Y (デフォルト): はい。

  • N: いいえ。

primaryKey

いいえ

プライマリキーインデックス。

プライマリキーには、分散キーとパーティションキーを含める必要があります。複合プライマリキーの先頭に分散キーとパーティションキーを配置することをお勧めします。

partitionType

いいえ

パーティションキーのタイプ。これを VALUE に設定します。

partitionColumn

いいえ

パーティションキー (サブパーティション)。

partitionCount

いいえ

サブパーティションのライフサイクル。

パーティションキーを指定する場合は、partitionCount を使用してライフサイクルを定義する必要があります。そうしないと、エラーが返されます。

たとえば、パーティションキー列が日時型の場合、'partitionCount'='365' は、各シャードが最大 365 個のサブパーティションを保持できることを示します。データが 365 日間保持される場合、366 日目に新しいデータが書き込まれると、1 日目に書き込まれたデータは自動的に削除されます。

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

  • VARCHAR

  • TIME

  • POINT

  • JSON

  • ARRAY

  • MAP

TIMESTAMP

  • DATETIME

  • TIMESTAMP

リファレンス

内部テーブルデータの読み取りと書き込み