Todos os produtos
Search
Central de documentação

AnalyticDB:Usar Spark SQL para criar uma tabela interna

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL oferece suporte ao Spark SQL para a criação de tabelas C-Store, que utilizam o mecanismo de armazenamento XUANWU. A sintaxe do Spark SQL para tabelas C-Store inclui propriedades específicas do AnalyticDB não encontradas no Spark SQL open source.

Diferenças de sintaxe em relação ao Spark SQL open source

A criação de tabelas C-Store no AnalyticDB for MySQL exige chaves TBLPROPERTIES específicas do AnalyticDB (consulte Parâmetros). Para criar bancos de dados e consultar dados, o AnalyticDB for MySQL utiliza a mesma sintaxe do Spark SQL open source. Para obter detalhes, consulte a referência do Spark SQL open source.

Limitações

O Spark SQL só pode criar tabelas que utilizam o mecanismo de armazenamento XUANWU.

Sintaxe

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

Parâmetros

Parâmetros principais

Parâmetro

Obrigatório

Descrição

table_identifier

Sim

Nome da tabela. Utilize o formato db_name.table_identifier para diferenciar tabelas com o mesmo nome em bancos de dados distintos. Para convenções de nomenclatura, consulte Convenções de nomenclatura.

column_name

Sim

Nome da coluna. Para convenções de nomenclatura, consulte Convenções de nomenclatura.

column_type

Sim

Tipo de dados da coluna. Para tipos suportados, consulte Mapeamentos de tipos de dados.

USING adb

Sim

Especifique que a tabela é uma tabela do AnalyticDB for MySQL.

COMMENT

Não

Comentário sobre a tabela.

TBLPROPERTIES

Não

Pares chave-valor que definem as propriedades da tabela. Consulte os parâmetros TBLPROPERTIES abaixo.

TBLPROPERTIES: propriedades obrigatórias

Propriedade

Obrigatória

Descrição

distributeType

Sim

Tipo de distribuição. Valores válidos: HASH (distribui os dados da tabela entre shards com base nos valores de hash das colunas de chave de distribuição) e BROADCAST (armazena uma cópia completa da tabela em cada shard; mantenha as tabelas replicadas pequenas).

distributeColumns

Sim

Colunas da chave de distribuição. Aceita múltiplas colunas. A chave de distribuição não pode ser alterada após a criação da tabela.

storagePolicy

Sim

Política de armazenamento. Valores válidos: HOT (padrão), COLD e MIXED. Não diferencia maiúsculas de minúsculas. Consulte Políticas de armazenamento para obter detalhes.

TBLPROPERTIES: propriedades opcionais

Propriedade

Obrigatória

Descrição

hotPartitionCount

Obrigatória quando storagePolicy=MIXED

Número de partições quentes para armazenamento híbrido. As partições são classificadas pelo valor da chave de partição em ordem decrescente — as primeiras N partições são partições quentes armazenadas em SSDs, e as demais são partições frias armazenadas no OSS. N deve ser um número inteiro positivo. Não defina esta propriedade para políticas de armazenamento HOT ou COLD.

primaryKey

Não

Colunas da chave primária. Uma chave primária deve incluir a chave de distribuição e a chave de partição. Posicione a chave de distribuição e a chave de partição no início de uma chave primária composta.

partitionType

Não

Tipo de partição. Defina como VALUE.

partitionColumn

Não

Coluna da chave de partição (subpartição).

partitionCount

Não

Ciclo de vida da partição — número máximo de subpartições por shard. Se você especificar uma chave de partição, também deverá definir partitionCount, caso contrário, um erro será retornado. Por exemplo, 'partitionCount'='365' significa que cada shard retém no máximo 365 subpartições. Se uma coluna de data for a chave de partição, os dados do dia 1 serão excluídos automaticamente quando novos dados chegarem no dia 366.

indexName

Não

Nomes dos índices, separados por vírgula. Exemplo: 'indexName'='index1,index2'.

indexType

Não

Tipo de índice para um índice nomeado. Valores válidos: FULLTEXT (índice de texto completo) e NORMAL (índice comum). Exemplo: 'indexType.index1'='FULLTEXT'.

indexColumn

Não

Coluna indexada para um índice nomeado. Exemplo: 'indexColumn.index1'='c1'.

indexAll

Não

Especifique se todas as colunas devem ser indexadas. Valores válidos: Y (padrão) e N.

tableEngineName

Não

Mecanismo de armazenamento. O padrão é XUANWU.

Políticas de armazenamento

Política

Localização dos dados

Desempenho

Custo

Quando usar

HOT (padrão)

Todas as partições em SSDs

Melhor desempenho de consulta

Mais alto

Dados acessados frequentemente

COLD

Todas as partições no OSS com armazenamento redundante de zona (multi-AZ)

Inferior

Econômico

Dados raramente acessados

MIXED

Partições quentes em SSDs; partições frias no OSS

Alto para dados recentes

Equilibrado

A frequência de acesso aos dados varia conforme a antiguidade; requer hotPartitionCount

Exemplos

Criar uma tabela não particionada

-- 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'
);

Criar uma tabela particionada com ciclo de vida

-- 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'
);

Mapeamentos de tipos de dados

Tipo Spark SQL

Tipo 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

Próximas etapas

Leitura e gravação de dados de tabelas internas