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 |
|
|
Sí |
Nombre de la tabla. Utilice el formato |
|
|
Sí |
Nombre de la columna. Para conocer las convenciones de nomenclatura, consulte Naming conventions. |
|
|
Sí |
Tipo de datos de la columna. Para ver los tipos compatibles, consulte Data type mappings. |
|
|
Sí |
Especifica que la tabla es una tabla de AnalyticDB for MySQL. |
|
|
No |
Comentario para la tabla. |
|
|
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 |
|
|
Sí |
Tipo de distribución. Valores válidos: |
|
|
Sí |
Columnas clave de distribución. Acepta varias columnas. La clave de distribución no se puede modificar después de crear la tabla. |
|
|
Sí |
Directiva de almacenamiento. Valores válidos: |
TBLPROPERTIES: propiedades opcionales
|
Propiedad |
Obligatorio |
Descripción |
|
|
Obligatorio cuando |
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 |
|
|
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. |
|
|
No |
Tipo de partición. Establezca este valor en |
|
|
No |
Columna clave de partición (subpartición). |
|
|
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 |
|
|
No |
Nombres de los índices, separados por comas. Ejemplo: |
|
|
No |
Tipo de índice para un índice con nombre. Valores válidos: |
|
|
No |
Columna indizada para un índice con nombre. Ejemplo: |
|
|
No |
Especifica si se deben indizar todas las columnas. Valores válidos: |
|
|
No |
Motor de almacenamiento. El valor predeterminado es |
Directivas de almacenamiento
|
Directiva |
Ubicación de los datos |
Rendimiento |
Costo |
Recomendado cuando |
|
|
Todas las particiones en SSD |
Mejor rendimiento de consulta |
Más alto |
Se accede a los datos con frecuencia |
|
|
Todas las particiones en OSS con zone-redundant storage (zona múltiple) |
Menor |
Rentable |
Rara vez se accede a los datos |
|
|
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 |
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 |