Todos los productos
Search
Centro de documentos

AnalyticDB:Uso de Spark SQL para crear una tabla interna

Última actualización: Sep 04, 2026

AnalyticDB for MySQL es compatible con Spark SQL para crear tablas C-Store, las cuales utilizan el motor de almacenamiento XUANWU. La sintaxis de Spark SQL para tablas C-Store incluye propiedades específicas de AnalyticDB que no se encuentran en Spark SQL de código abierto.

Diferencias de sintaxis respecto a Spark SQL de código abierto

La creación de tablas C-Store en AnalyticDB for MySQL requiere claves TBLPROPERTIES específicas de AnalyticDB (consulte Parameters). Para crear bases de datos y consultar datos, AnalyticDB for MySQL utiliza la misma sintaxis que Spark SQL de código abierto. Para más detalles, consulte la referencia de Spark SQL de código abierto.

Limitaciones

Spark SQL solo permite crear tablas que utilicen el motor de almacenamiento XUANWU.

Sintaxis

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 principales

Parámetro

Obligatorio

Descripción

table_identifier

Sí

Nombre de la tabla. Utilice el formato db_name.table_identifier para distinguir tablas con el mismo nombre en distintas bases de datos. Para conocer las convenciones de nomenclatura, consulte Naming conventions.

column_name

Sí

Nombre de la columna. Para conocer las convenciones de nomenclatura, consulte Naming conventions.

column_type

Sí

Tipo de datos de la columna. Para ver los tipos compatibles, consulte Data type mappings.

USING adb

Sí

Especifica que la tabla es una tabla de AnalyticDB for MySQL.

COMMENT

No

Comentario para la tabla.

TBLPROPERTIES

No

Pares clave-valor que definen las propiedades de la tabla. Consulte los parámetros de TBLPROPERTIES a continuación.

TBLPROPERTIES: propiedades obligatorias

Propiedad

Obligatorio

Descripción

distributeType

Sí

Tipo de distribución. Valores válidos: HASH (distribuye los datos de la tabla entre shards según los valores hash de las columnas clave de distribución) y BROADCAST (almacena una copia completa de la tabla en cada shard; mantenga pequeñas las tablas replicadas).

distributeColumns

Sí

Columnas clave de distribución. Acepta varias columnas. La clave de distribución no se puede modificar después de crear la tabla.

storagePolicy

Sí

Directiva de almacenamiento. Valores válidos: HOT (predeterminado), COLD y MIXED. No distingue entre mayúsculas y minúsculas. Consulte Directivas de almacenamiento para más detalles.

TBLPROPERTIES: propiedades opcionales

Propiedad

Obligatorio

Descripción

hotPartitionCount

Obligatorio cuando storagePolicy=MIXED

Número de particiones activas para el almacenamiento híbrido. Las particiones se ordenan por valor de clave de partición en orden descendente: las primeras N particiones son particiones activas almacenadas en SSD, y las restantes son particiones inactivas almacenadas en OSS. N debe ser un entero positivo. No establezca esta propiedad para las directivas de almacenamiento HOT o COLD.

primaryKey

No

Columnas de clave principal. Una clave principal debe incluir la clave de distribución y la clave de partición. Coloque la clave de distribución y la clave de partición al inicio de una clave principal compuesta.

partitionType

No

Tipo de partición. Establezca este valor en VALUE.

partitionColumn

No

Columna clave de partición (subpartición).

partitionCount

No

Ciclo de vida de la partición: número máximo de subparticiones por shard. Si especifica una clave de partición, también debe establecer partitionCount; de lo contrario, se devuelve un error. Por ejemplo, 'partitionCount'='365' significa que cada shard conserva como máximo 365 subparticiones. Si una columna de fecha es la clave de partición, los datos del día 1 se eliminan automáticamente cuando llegan nuevos datos en el día 366.

indexName

No

Nombres de los índices, separados por comas. Ejemplo: 'indexName'='index1,index2'.

indexType

No

Tipo de índice para un índice con nombre. Valores válidos: FULLTEXT (índice de texto completo) y NORMAL (índice normal). Ejemplo: 'indexType.index1'='FULLTEXT'.

indexColumn

No

Columna indizada para un índice con nombre. Ejemplo: 'indexColumn.index1'='c1'.

indexAll

No

Especifica si se deben indizar todas las columnas. Valores válidos: Y (predeterminado) y N.

tableEngineName

No

Motor de almacenamiento. El valor predeterminado es XUANWU.

Directivas de almacenamiento

Directiva

Ubicación de los datos

Rendimiento

Costo

Recomendado cuando

HOT (predeterminado)

Todas las particiones en SSD

Mejor rendimiento de consulta

Más alto

Se accede a los datos con frecuencia

COLD

Todas las particiones en OSS con zone-redundant storage (zona múltiple)

Menor

Rentable

Rara vez se accede a los datos

MIXED

Particiones activas en SSD; particiones inactivas en OSS

Alto para datos recientes

Equilibrado

La frecuencia de acceso a los datos varía según su antigüedad; requiere hotPartitionCount

Ejemplos

Crear una tabla sin particiones

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

Crear una tabla con particiones y 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'
);

Asignaciones de tipos de datos

Tipo de Spark SQL

Tipo de 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

Siguientes pasos

Reading and writing internal table data