Importación de datos de tablas desde DLI a un clúster de DWS
Este ejercicio demuestra cómo utilizar la función de tabla externa de DWS para importar datos desde DLI a DWS.
Para obtener más información sobre DLI, consulte ¿Qué es Data Lake Insight?
Este ejercicio dura aproximadamente 60 minutos e implica el uso de varios servicios en la nube, como Virtual Private Cloud (VPC) and Subnet, Data Lake Insight (DLI), Object Storage Service (OBS) y DWS. A continuación se presenta un resumen del ejercicio.
- Preparativos
- Paso 1: Preparación de los datos de origen de DLI
- Paso 2: Creación de un clúster de DWS
- Paso 3: Obtención de la información de autenticación requerida por el servidor externo de DWS.
- Paso 4: Importación de datos de tablas de DLI mediante una tabla externa
Preparativos
- Ha creado un ID de Huawei y habilitado los servicios de Huawei Cloud. La cuenta no puede estar en mora o congelada.
- Ha creado una VPC y una subred. Para obtener más información, consulte Creación de una VPC.
- Ha obtenido la AK y la SK de su cuenta de Huawei. Para obtener más información, consulte Claves de acceso.
Paso 1: Preparación de los datos de origen de DLI
- Cree un grupo de recursos elásticos de DLI y una cola.
- Inicie sesión en la consola de DLI.
- En el panel de navegación de la izquierda, seleccione Resources > Resource Pool.
- Haga clic en Buy Resource Pool en la esquina superior derecha, establezca los siguientes parámetros y conserve los valores predeterminados para otros parámetros que no se describen en la tabla.
Tabla 1 Parámetros de grupo de recursos elásticos de DLI Parámetro
Valor
Billing Mode
Pay-per-use
Region
CN-Hong Kong
Name
dli_dws
Specifications
Standard
CIDR Block
172.16.0.0/18.
- Haga clic en Buy y haga clic en Submit.
Una vez creado el grupo de recursos, siga con el siguiente paso.
- En la página de grupo de recursos elásticos, busque la fila que contiene el grupo de recursos creado, haga clic en Add Queue en la columna Operation y configure los siguientes parámetros. Conserve los valores predeterminados para otros parámetros que no se describen en la tabla.
Tabla 2 Adición de una cola Parámetro
Valor
Name
dli_dws
Type
For SQL
- Haga clic en Next y en OK. La cola se ha creado.
- Cargue los datos de origen en el bucket de OBS.
- Se ha creado un bucket de OBS con un nombre definido por el usuario, por ejemplo, dli-obs01 (si el nombre del bucket ya está en uso, utilice dli-obs02 en su lugar). La región es CN-Hong Kong.
- Descargue el archivo de muestra de datos.
- Cree una carpeta dli_order en el bucket de OBS y cargue el archivo de datos descargado en esa carpeta.
- Vuelva a la consola de gestión de DLI. En el panel de navegación, haga clic en SQL Editor. Seleccione dli_dws para Queue y default para Database. Ejecute el siguiente comando para crear una base de datos llamada dli_data:
1CREATE DATABASE dli_data;default
- Cree una tabla.
LOCATION especifica el directorio de OBS donde se almacena el archivo de datos, formateado como obs://OBS bucket name/folder name. En este ejemplo, el directorio es obs://dli-obs01/dli_order. Si el nombre de bucket o el nombre de la carpeta cambia, sustitúyalo en consecuencia.
1 2 3 4 5 6 7 8 9
CREATE EXTERNAL TABLE dli_data.dli_order ( order_id VARCHAR(12), order_channel VARCHAR(32), order_time TIMESTAMP, cust_code VARCHAR(6), pay_amount DOUBLE, real_pay DOUBLE ) STORED AS parquet LOCATION 'obs://dli-obs01/dli_order';
- Ejecute la siguiente sentencia para consultar datos.
1SELECT * FROM dli_data.dli_order;
Paso 2: Creación de un clúster de DWS
- Crear un clúster. Para garantizar la conectividad de red, configure la región del clúster de DWS como CN-Hong Kong.
Paso 3: Obtención de la información de autenticación requerida por el servidor externo de DWS
- Obtenga el punto de conexión del bucket de OBS.
- Inicie sesión en la consola de OBS.
- Haga clic en el nombre del bucket, seleccione Overview a la izquierda y registre el punto de conexión.

- Obtenga el punto de conexión de DLI de Puntos de conexión.
En este ejemplo, el punto de conexión es dli.ap-southeast-1.myhuaweicloud.com.
En este ejemplo (EU-Dublin), el punto de conexión es dli.eu-west-101.myhuaweicloud.com.
- Obtenga el ID del proyecto para la región específica de la cuenta utilizada para crear DLI.
- Mueva el cursor al nombre de la cuenta en la esquina superior derecha y haga clic en My Credentials.
- Seleccione API Credentials a la izquierda.
- En la lista, busque la región donde se despliega la instancia de DLI, por ejemplo, CN-Hong Kong, y registre el ID del proyecto correspondiente al nombre de la región.

- Obtenga la AK y la SK de su cuenta. Para obtener más información, consulte Requisitos previos.
Paso 4: Importación de datos de tablas de DLI mediante una tabla externa
- Inicie sesión en la base de datos de DWS como administrador del sistema dbadmin. De forma predeterminada, puede iniciar sesión en la base de datos de GaussDB.
- Ejecute las siguientes sentencias SQL para crear un servidor externo: El punto de conexión de OBS se obtiene de 1, la AK y la SK se obtienen de Preparativos y el punto de conexión de DLI se obtiene de 2.
Si las instancias de DWS y DLI se crean con la misma cuenta, ingrese la AK y la SK dos veces.
1 2 3 4 5 6 7 8 9
CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS (ADDRESS'OBS endpoint', ACCESS_KEY'AK value' SECRET_ACCESS_KEY'SK value' TYPE 'DLI', DLI_ADDRESS'DLI endpoint', DLI_ACCESS_KEY'AK value', DLI_SECRET_ACCESS_KEY 'SK value' );

- Ejecute la siguiente sentencia SQL para crear un esquema de destino:
1CREATE SCHEMA dws_data;
- Ejecute las siguientes sentencias SQL para crear una tabla externa: Reemplace Project ID con el valor real obtenido en 3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
CREATE FOREIGN TABLE dws_data.dli_pq_order ( order_id VARCHAR(14) PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_time TIMESTAMP, cust_code VARCHAR(6), pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ) SERVER dli_server OPTIONS ( FORMAT 'parquet', ENCODING 'utf8', DLI_PROJECT_ID'Project ID' DLI_DATABASE_NAME 'dli_data', DLI_TABLE_NAME 'dli_order') DISTRIBUTE BY roundrobin;

- Ejecute la siguiente sentencia SQL para consultar los datos de la tabla DLI a través de la tabla externa. Se accede con éxito a los datos de la tabla DLI.
1SELECT * FROM dws_data.dli_pq_order;

- Ejecute las siguientes sentencias SQL para crear una tabla local para importar datos de la tabla DLI:
1 2 3 4 5 6
CREATE TABLE dws_data.dws_monthly_order ( order_month CHAR(8), cust_code VARCHAR(6), order_count INT, total_pay_amount DOUBLE PRECISION, total_real_pay DOUBLE PRECISION );
- Ejecute las siguientes sentencias SQL para consultar los detalles de los pedidos mensuales de 2023 e importe el resultado a la tabla DWS:
1 2 3 4 5 6 7 8
INSERT INTO dws_data.dws_monthly_order ( order_month, cust_code, order_count , total_pay_amount, total_real_pay ) SELECT TO_CHAR(order_time, 'MON-YYYY'), cust_code, COUNT(*) , SUM(pay_amount), SUM(real_pay) FROM dws_data.dli_pq_order WHERE DATE_PART('Year', order_time) = 2023 GROUP BY TO_CHAR(order_time, 'MON-YYYY'), cust_code;
- Ejecute la siguiente sentencia SQL para consultar los datos de la tabla.
Los datos de la tabla DLI se importan correctamente a la base de datos DWS.
1SELECT * FROM dws_data.dws_monthly_order;
