Tous les produits
Search
Centre de documentation

AnalyticDB:Utiliser Spark SQL pour créer une table interne

Dernière mise à jour :Aug 10, 2026

AnalyticDB for MySQL prend en charge Spark SQL pour la création de tables C-Store reposant sur le moteur de stockage XUANWU. La syntaxe Spark SQL dédiée aux tables C-Store intègre des propriétés spécifiques à AnalyticDB absentes de la version open source de Spark SQL.

Différences syntaxiques par rapport à Spark SQL open source

La création de tables C-Store dans AnalyticDB for MySQL nécessite des clés TBLPROPERTIES spécifiques à AnalyticDB (voir les Paramètres). En revanche, pour la création de bases de données et l'interrogation des données, AnalyticDB for MySQL utilise la même syntaxe que Spark SQL open source. Pour plus de détails, consultez la documentation de référence Spark SQL open source.

Limitations

Spark SQL permet uniquement de créer des tables utilisant le moteur de stockage XUANWU.

Syntaxe

CREATE TABLE [ IF NOT EXISTS ] table_identifier
    [ ( column_name column_type [ COMMENT col_comment1 ], ... ) ]
    USING adb
    [ COMMENT table_comment ]
    [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]

Paramètres

Paramètres principaux

Paramètre Obligatoire Description
table_identifier Oui Nom de la table. Utilisez le format db_name.table_identifier pour distinguer les tables homonymes dans différentes bases de données. Pour connaître les conventions d'attribution des noms, consultez la section Conventions d'attribution des noms.
column_name Oui Nom de la colonne. Pour connaître les conventions d'attribution des noms, consultez la section Conventions d'attribution des noms.
column_type Oui Type de données de la colonne. Pour consulter la liste des types pris en charge, reportez-vous à la section Mappages des types de données.
USING adb Oui Indique que la table est une table AnalyticDB for MySQL.
COMMENT Non Commentaire associé à la table.
TBLPROPERTIES Non Paires clé-valeur définissant les propriétés de la table. Consultez les paramètres TBLPROPERTIES ci-dessous.

TBLPROPERTIES : propriétés obligatoires

Propriété Obligatoire Description
distributeType Oui Type de distribution. Valeurs acceptées : HASH (répartit les données de la table entre les shards selon les valeurs de hachage des colonnes de la clé de distribution) et BROADCAST (stocke une copie complète de la table dans chaque shard ; maintenez une taille réduite pour les tables répliquées).
distributeColumns Oui Colonnes constituant la clé de distribution. Plusieurs colonnes sont acceptées. La clé de distribution ne peut pas être modifiée après la création de la table.
storagePolicy Oui Politique de stockage. Valeurs acceptées : HOT (valeur par défaut), COLD et MIXED. La casse n'est pas prise en compte. Pour plus de détails, consultez la section Politiques de stockage.

TBLPROPERTIES : propriétés facultatives

Propriété Obligatoire Description
hotPartitionCount Obligatoire si storagePolicy=MIXED Nombre de partitions chaudes pour le stockage hybride. Les partitions sont triées par valeur de clé de partition par ordre décroissant : les N premières partitions sont des partitions chaudes stockées sur des disques SSD, tandis que les partitions restantes sont des partitions froides stockées dans OSS. N doit être un entier positif. Ne définissez pas cette propriété pour les politiques de stockage HOT ou COLD.
primaryKey Non Colonnes constituant la clé primaire. Une clé primaire doit inclure la clé de distribution et la clé de partition. Placez la clé de distribution et la clé de partition au début d'une clé primaire composite.
partitionType Non Type de partition. Définissez la valeur sur VALUE.
partitionColumn Non Colonne de clé de partition (sous-partition).
partitionCount Non Cycle de vie des partitions — nombre maximal de sous-partitions par shard. Si vous spécifiez une clé de partition, vous devez également définir partitionCount, sinon une erreur est renvoyée. Par exemple, 'partitionCount'='365' signifie que chaque shard conserve au maximum 365 sous-partitions. Si une colonne de date sert de clé de partition, les données du jour 1 sont automatiquement supprimées lorsque de nouvelles données arrivent le jour 366.
indexName Non Noms des index, séparés par des virgules. Exemple : 'indexName'='index1,index2'.
indexType Non Type d'index pour un index nommé. Valeurs acceptées : FULLTEXT (index en texte intégral) et NORMAL (index standard). Exemple : 'indexType.index1'='FULLTEXT'.
indexColumn Non Colonne indexée pour un index nommé. Exemple : 'indexColumn.index1'='c1'.
indexAll Non Indique s'il faut indexer toutes les colonnes. Valeurs acceptées : Y (valeur par défaut) et N.
tableEngineName Non Moteur de stockage. La valeur par défaut est XUANWU.

Politiques de stockage

Politique Emplacement des données Performances Coût Cas d'utilisation
HOT (par défaut) Toutes les partitions sur des disques SSD Meilleures performances de requête Le plus élevé Accès fréquent aux données
COLD Toutes les partitions dans OSS avec stockage redondant interzones (multi-AZ) Inférieures Économique Accès rare aux données
MIXED Partitions chaudes sur des disques SSD ; partitions froides dans OSS Élevées pour les données récentes Équilibré Fréquence d'accès aux données variable selon l'ancienneté ; nécessite hotPartitionCount

Exemples

Créer une table non partitionnée

-- Non-partitioned table with HASH distribution and COLD storage
CREATE TABLE orders (
  order_id     BIGINT    NOT NULL COMMENT 'Order ID',
  customer_id  INT       NOT NULL COMMENT 'Customer ID',
  order_status STRING    NOT NULL COMMENT 'Order status',
  total_price  BIGINT    NOT NULL COMMENT 'Order amount',
  order_date   TIMESTAMP NOT NULL COMMENT 'Order date'
)
USING adb
TBLPROPERTIES (
  'distributeType'    = 'HASH',
  'distributeColumns' = 'order_status',
  'storagePolicy'     = 'COLD'
);

Créer une table partitionnée avec un cycle de vie

-- Partitioned table with primary key, selective indexing, and partition lifecycle
CREATE TABLE customer (
  customer_id     BIGINT    NOT NULL COMMENT 'Customer ID',
  customer_name   STRING    NOT NULL COMMENT 'Customer name',
  phone_num       BIGINT    NOT NULL COMMENT 'Phone number',
  city_name       STRING    NOT NULL COMMENT 'City',
  sex             INT       NOT NULL COMMENT 'Gender',
  id_number       STRING    NOT NULL COMMENT 'ID card number',
  home_address    STRING    NOT NULL COMMENT 'Home address',
  office_address  STRING    NOT NULL COMMENT 'Office address',
  age             INT       NOT NULL COMMENT 'Age',
  login_time      TIMESTAMP NOT NULL COMMENT 'Logon time'
)
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'
);

Mappages des types de données

Type Spark SQL Type 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

Étapes suivantes

Lecture et écriture des données des tables internes