CREATE EXTERNAL DATABASE asigna un origen de datos externo —MaxCompute o un lago de datos de Data Lake Formation (DLF)— a una instancia de Hologres como un solo objeto de base de datos. Una vez asignado, consulte las tablas externas mediante la ruta de tres partes ext_db.schema.table, ejecute consultas federadas entre datos internos y externos y gestione todos los metadatos desde un solo lugar.
Las bases de datos externas son visibles en toda la instancia de Hologres, por lo que cualquier base de datos interna puede hacer referencia a ellas. Asimismo, puede conectarse directamente a una base de datos externa. Ejecute sentencias SQL y establezca parámetros de Grand Unified Configuration (GUC).
Compatible con Hologres V3.0 y versiones posteriores.
Elija el origen de datos
Los dos orígenes de datos compatibles funcionan de manera diferente. Elija el adecuado antes de escribir la sentencia.
|
MaxCompute |
DLF |
|
|
A qué se conecta |
Un proyecto de MaxCompute |
Un catálogo de DLF (formato Paimon) |
|
Ubicación de almacenamiento |
Almacenamiento de MaxCompute |
Object Storage Service (OSS) gestionado por DLF |
|
Formatos compatibles |
Nativo de MaxCompute |
Paimon (gestionado por DLF); Paimon, Apache Hudi, Delta Lake, ORC, Parquet, CSV, SequenceFile (DLF V1.0) |
|
Cuándo usarlo |
Sus datos residen en proyectos de MaxCompute |
Sus datos residen en lagos de datos de OSS gestionados por DLF |
Hologres utiliza su motor High-QPS Engine (HQE), desarrollado internamente, para lecturas y escrituras de alto rendimiento en formatos de lago de datos, como Paimon, Hudi y Delta Lake.
Requisitos previos
Configuración de la instancia
Habilite la aceleración de lago de datos para la instancia antes de ejecutar CREATE EXTERNAL DATABASE:
Abra Hologres console y vaya a Instance List o a la página Instance Details.
Busque la instancia de destino y haga clic en Data Lake Acceleration en la columna Actions.
Haga clic en Confirm en el cuadro de diálogo.
Activación de servicios
DLF: Active el servicio DLF. Consulte Quick start y Available regions and endpoints.
DLF V1.0: Active también Object Storage Service (OSS) y complete la autorización de OSS. Sin los permisos de OSS obligatorios, las consultas fallan aunque la tabla externa se cree correctamente. Consulte Bucket policy.
OSS-HDFS (opcional): Active el servicio OSS-HDFS si planea usar almacenamiento de OSS-HDFS. Consulte Activate the OSS-HDFS service.
Permisos
La cuenta que ejecuta
CREATE EXTERNAL DATABASEdebe tener permisos de Superuser en Hologres.Los permisos sobre los datos externos (tablas, esquemas) los controla MaxCompute o DLF, no Hologres. Conceda al rol vinculado al servicio (SLR)
AliyunServiceRoleForHologresIdentityMgmtlos permisos obligatorios antes de acceder a los datos externos. Consulte Hologres service-linked role.Para usar un rol de RAM en lugar del SLR, consulte RAM role overview.
Para cuentas que no son de Alibaba Cloud y usuarios de RAM (por ejemplo, cuentas BASIC de Hologres), use
CREATE USER MAPPINGpara vincular y autorizar la cuenta. Consulte CREATE USER MAPPING.
Limitaciones
El acceso entre bases de datos es unidireccional. Si está conectado a una base de datos interna, acceda a las tablas externas mediante la ruta completa
ext_db.schema.table. Si se conecta directamente a una base de datos externa, no podrá acceder a las tablas de la base de datos interna.El TTL de la caché de metadatos está fijo en 5 minutos. Hologres almacena en caché los metadatos externos durante 5 minutos para mejorar el rendimiento. Este valor no se puede configurar. Para forzar una actualización, use la sentencia
REFRESH CACHEdescrita en Actualizar metadatos externos.MaxCompute: solo son compatibles los proyectos internos. No se pueden asignar proyectos externos de MaxCompute.
Sintaxis
Origen de datos de MaxCompute
CREATE EXTERNAL DATABASE <ext_database_name> WITH
metastore_type 'maxcompute'
mc_project '<project_name>'
[comment '<description>'];
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Tipo de metastore. Establezca el valor en |
|
|
Sí |
Nombre del proyecto de MaxCompute que se asignará. Solo son compatibles los proyectos internos de MaxCompute. |
|
|
No |
Descripción de la base de datos externa. |
Origen de datos de DLF
Actualmente, DLF solo admite el modo de almacenamiento gestionado y el tipo de catálogo Paimon. Establezcametastore_typeendlf-restycatalog_typeenpaimon. La autenticación usa el SLR (AliyunServiceRoleForHologresIdentityMgmt) de forma predeterminada. Para usar un rol de RAM en su lugar, configure el rol medianteCREATE USER MAPPING.
CREATE EXTERNAL DATABASE <ext_database_name> WITH
catalog_type 'paimon'
metastore_type 'dlf-rest'
dlf_catalog '<dlf_catalog_name>'
[comment '<description>'];
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Tipo de metastore para el origen de datos de DLF. Establezca el valor en |
|
|
Sí |
Formato de tabla del lago de datos. Establezca el valor en |
|
|
Sí |
Nombre del catálogo de DLF que se asignará. |
|
|
No |
Descripción de la base de datos externa. |
Origen de datos de DLF V1.0
DLF V1.0 admite almacenamiento de OSS personalizado y formatos adicionales: Paimon, Apache Hudi, Delta Lake, ORC, Parquet, CSV y SequenceFile. Consulte Data lake acceleration . DLF V1.0 no admite la autenticación con SLR ni con un rol de RAM. Use CREATE USER MAPPING para proporcionar credenciales para cada usuario.
CREATE EXTERNAL DATABASE <ext_database_name> WITH
metastore_type 'dlf'
dlf_region '<region>'
dlf_endpoint '<dlf_endpoint>'
dlf_catalog '<catalog_name>'
oss_endpoint '<oss_endpoint>'
[comment '<description>'];
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
Ejemplo |
|
|
Sí |
Tipo de metastore. Establezca el valor en |
|
|
|
No |
Formato de tabla del lago de datos. DLF V1.0 admite Paimon, Hudi, Delta Lake, ORC, Parquet, CSV y SequenceFile. No es obligatorio para DLF V1.0. |
|
|
|
Sí |
Región donde se implementa el servicio DLF. Formato: |
|
|
|
Sí |
Endpoint de red interna para el acceso a DLF. Formato: |
|
|
|
Sí |
Nombre del catálogo de DLF que se asignará. |
|
|
|
Sí |
AccessKey ID para acceder a DLF. Proporcione este valor mediante |
— |
|
|
Sí |
AccessKey secret para acceder a DLF. Proporcione este valor mediante |
— |
|
|
Sí |
Endpoint para acceder a OSS. Use el endpoint interno para mejorar el rendimiento. Para OSS-HDFS, use el endpoint interno de OSS-HDFS. Consulte Get the OSS-HDFS domain name. |
|
|
|
Sí |
AccessKey ID para acceder a OSS. Proporcione este valor mediante |
— |
|
|
Sí |
AccessKey secret para acceder a OSS. Proporcione este valor mediante |
— |
|
|
No |
Descripción de la base de datos externa. |
— |
Ejemplos
Origen de datos de MaxCompute
Cuando asigna un proyecto de MaxCompute que usa un modelo de dos capas, Hologres lo muestra como una estructura de tres capas:ext_db.schema.mc_table. El nombre del esquema esdefaultde forma predeterminada. Por ejemplo:SELECT * FROM ext_db.default.mc_table.
-- Create an external database for a MaxCompute project.
CREATE EXTERNAL DATABASE ext_database_mc WITH
metastore_type 'maxcompute'
mc_project 'mc_3_layer_project'
comment 'mc three layer project';
-- Query a table in the external database.
SELECT * FROM ext_database_mc.mc_schema.mc_table;
Origen de datos de DLF
-- Create an external database for a DLF Paimon catalog.
CREATE EXTERNAL DATABASE ext_database_dlf WITH
metastore_type 'dlf-rest'
catalog_type 'paimon'
dlf_catalog 'dlf_paimon_catalog'
comment 'DLF paimon catalog';
-- Query a table in the external database.
SELECT * FROM ext_database_dlf.dlf_db.paimon_table;
Origen de datos de DLF V1.0
DLF V1.0 requiere un par de AccessKey tanto para DLF como para OSS. Proporcione las credenciales mediante CREATE USER MAPPING en lugar de incluirlas en la sentencia CREATE EXTERNAL DATABASE.
-- Create an external database.
CREATE EXTERNAL DATABASE ext_database_dlf1 WITH
metastore_type 'dlf'
dlf_region 'cn-beijing'
dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com'
dlf_catalog 'hive_catalog'
oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com'
comment 'DLF1.0 hive catalog';
-- Bind credentials for the current user.
CREATE USER MAPPING FOR current_user
EXTERNAL DATABASE ext_database_dlf1
OPTIONS
(
dlf_access_id 'LTxxxxxxxxxx',
dlf_access_key 'y8xxxxxxxxxxxxx',
oss_access_id 'LTxxxxxxxxxx',
oss_access_key 'y8xxxxxxxxxxxxx'
);
-- Query a table in the external database.
SELECT * FROM ext_database_dlf1.dlf_db.hive_table;
Más operaciones
Consulte todas las bases de datos externas
SELECT database_name, options FROM hologres.hg_external_databases();
Actualizar metadatos externos
Fuerce una actualización inmediata de metadatos en lugar de esperar a que expire la caché:
REFRESH CACHE FOR EXTERNAL DATABASE <EXT_DB_NAME> WITH (cache_level = 'metadata');
Modifique el intervalo de actualización de metadatos
El parámetro metadata_refresh_interval_sec controla el intervalo de actualización completa del esquema por nodo de frontend (FE). El valor predeterminado es 7,200 segundos. Ajuste este valor con:
ALTER EXTERNAL DATABASE <EXT_DB_NAME> WITH metadata_refresh_interval_sec 1800;