A partir de Hologres V3.0.38, puede consultar tablas Delta de MaxCompute directamente desde Hologres sin mover los datos. Una tabla Delta es un formato de tabla de MaxCompute diseñado para datos incrementales. Admite importaciones de datos con granularidad de minutos y usa AliORC como formato de archivo subyacente. Además, es compatible con la semántica UPSERT y permite leer y escribir datos incrementales en formato Change Data Capture (CDC). Para obtener más información sobre los conceptos de las tablas Delta, consulte Terms.
Limitaciones
|
Capacidad |
Compatibilidad |
|
Leer la instantánea más reciente de una tabla Delta |
Compatible |
|
Escribir datos de vuelta desde Hologres hacia una tabla Delta |
No compatible |
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de Hologres activa. Consulte Purchase a Hologres instance.
Un proyecto de MaxCompute activo. Consulte Activate MaxCompute.
Los permisos obligatorios sobre el proyecto y las tablas de MaxCompute. Consulte Manage user permissions using commands.
Paso 1: Crear una tabla Delta en MaxCompute
Cree una tabla Delta en MaxCompute mediante uno de los métodos a continuación:
En DataWorks: asocie un origen de datos de MaxCompute y luego cree la tabla desde la consola de DataWorks.
Con MaxCompute local client: ejecute el comando SQL directamente.
El ejemplo a continuación crea una tabla Delta particionada llamada mf_dt:
CREATE TABLE IF NOT EXISTS mf_dt (
pk BIGINT NOT NULL PRIMARY KEY,
val BIGINT NOT NULL
)
PARTITIONED BY (dd STRING, hh STRING)
TBLPROPERTIES ("transactional"="true");
La propiedad "transactional"="true" marca la tabla como una tabla Delta.
Paso 2: Escribir datos en la tabla Delta
MaxCompute admite dos métodos para cargar datos en una tabla Delta:
Por lotes: use INSERT INTO o INSERT OVERWRITE. Consulte Insert or overwrite data.
Casi en tiempo real: use Flink para transmitir los datos. Consulte Use Flink to write data to MaxCompute.
El ejemplo a continuación utiliza inserciones por lotes para cargar datos en la tabla mf_dt:
-- Append rows to the dd='01', hh='01' partition
INSERT INTO TABLE mf_dt PARTITION (dd='01', hh='01')
VALUES (3, 30), (4, 4), (5, 5);
-- Overwrite the dd='01', hh='01' partition with new data
INSERT OVERWRITE TABLE mf_dt PARTITION (dd='01', hh='01')
VALUES (1, 1), (2, 2), (3, 3);
Paso 3: Asignar el proyecto de MaxCompute en Hologres
Cree una asignación de origen de datos externo en Hologres para que este detecte y consulte las tablas de MaxCompute. Hay dos métodos de asignación disponibles:
Base de datos externa: asigna todas las tablas de un proyecto de MaxCompute con un solo comando. Consulte CREATE EXTERNAL DATABASE.
Tabla externa: asigna esquemas y tablas individuales para lograr un control detallado. Consulte IMPORT FOREIGN SCHEMA y CREATE FOREIGN TABLE.
El ejemplo a continuación crea una asignación de base de datos externa para un proyecto de MaxCompute:
CREATE EXTERNAL DATABASE ext_database_mc WITH
metastore_type 'maxcompute'
mc_project 'mc_3_layer_project'
comment 'mc three layer project';
Después de crear la asignación, compruebe que los esquemas y las tablas se detecten correctamente:
-- List all schemas in the external database
SELECT * FROM hologres.hg_external_schemas('ext_database_mc');
-- List all tables in the default schema
SELECT * FROM hologres.hg_external_tables('ext_database_mc', 'default');
Paso 4: Consultar la tabla Delta
Antes de consultar una tabla Delta, establezca el parámetro GUC a continuación en la sesión:
SET hg_experimental_external_catalog_routing = 'odps:common_table';
Luego, consulte la tabla mediante el nombre de tres partes external_database.schema.table:
SELECT * FROM ext_database_mc.mc_schema_name.mf_dt;
Pasos siguientes
Para actualizar o refrescar los metadatos de la base de datos externa después de modificar el esquema en MaxCompute, consulte CREATE EXTERNAL DATABASE.
Si necesita controlar el acceso de cada tabla, utilice tablas externas en lugar de una base de datos externa. Consulte CREATE FOREIGN TABLE.
Para gestionar los permisos de usuario del lado de MaxCompute, consulte Manage user permissions using commands.