Este tema describe cómo procesar datos de Tablestore mediante Realtime Compute for Apache Flink. Una tabla de datos o una tabla de series temporales en Tablestore se puede utilizar como tabla de origen o tabla de resultados en el procesamiento de datos con Realtime Compute for Apache Flink.
Requisitos previos
Tablestore está activado y se ha creado una instancia. Para obtener más información, consulte Activate Tablestore and create an instance.
Ha creado una tabla de origen, una tabla de resultados y un túnel para la tabla de origen. Para obtener más información, consulte Operations on a data table, Operations on time series tables y Create a tunnel.
-
Se ha creado un espacio de trabajo de Realtime Compute for Apache Flink. Para obtener más información, consulte Activate Realtime Compute for Apache Flink.
ImportanteEl espacio de trabajo de Realtime Compute for Apache Flink y la instancia de Tablestore deben residir en la misma región. Para obtener información sobre las regiones compatibles con Realtime Compute for Apache Flink, consulte Regions.
-
Se ha obtenido un par de AccessKey.
ImportantePor motivos de seguridad, se recomienda utilizar las funciones de Tablestore como usuario de Resource Access Management (RAM). Para obtener más información, consulte Use the AccessKey pair of a RAM user to access Tablestore.
Desarrollo de un trabajo de cómputo en tiempo real
Paso 1: Crear un borrador SQL
-
Vaya a la página para crear un borrador.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la columna Actions del espacio de trabajo deseado, haga clic en Console.
En el panel de navegación izquierdo, haga clic en Development > ETL.
-
Haga clic en New. En el cuadro de diálogo New Draft, seleccione Blank Stream Draft y haga clic en Next.
NotaRealtime Compute for Apache Flink proporciona diversas plantillas de código y admite la sincronización de datos. Cada plantilla de código es adecuada para escenarios específicos y ofrece ejemplos de código e instrucciones. Puede hacer clic en una plantilla para conocer las funciones y la sintaxis relacionada de Realtime Compute for Apache Flink, e implementar su lógica de negocio. Para obtener más información, consulte Code templates y Data synchronization templates.
-
Introduzca la Job Information.
Parámetro
Descripción
Ejemplo
File Name
Nombre del borrador que desea crear.
NotaEl nombre del borrador debe ser único en el proyecto actual.
flink-test
Location
Carpeta donde se guarda el archivo de código del borrador.
También puede hacer clic en el icono
a la derecha de una carpeta existente para crear una subcarpeta. Draft
Engine version
Versión del motor Flink que desea utilizar para el borrador actual. Para obtener más información sobre las versiones del motor, consulte Release notes y Engine version.
vvr-8.0.10-flink-1.17
Haga clic en Create.
Paso 2: Escribir el borrador SQL
En el ejemplo de este paso, se escribe código para sincronizar datos de una tabla de datos a otra. Para obtener información sobre más ejemplos de sentencias SQL, consulte Sample SQL statements.
-
Cree una tabla temporal para la tabla de origen y la tabla de resultados.
Para obtener más información, consulte Appendix 1: Tablestore connector.
-- Create a temporary table named tablestore_stream for the source table. CREATE TEMPORARY TABLE tablestore_stream( `order` VARCHAR, orderid VARCHAR, customerid VARCHAR, customername VARCHAR ) WITH ( 'connector' = 'ots', -- Specify the connector type of the source table. The value is ots and cannot be changed. 'endPoint' = 'https://xxx.cn-hangzhou.vpc.tablestore.aliyuncs.com', -- Specify the virtual private cloud (VPC) endpoint of the Tablestore instance. 'instanceName' = 'xxx', -- Specify the name of the Tablestore instance. 'tableName' = 'flink_source_table', -- Specify the name of the source table. 'tunnelName' = 'flink_source_tunnel', -- Specify the name of the tunnel that is created for the source table. 'accessId' = 'xxxxxxxxxxx', -- Specify the AccessKey ID of the Alibaba Cloud account or RAM user. 'accessKey' = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Specify the AccessKey secret of the Alibaba Cloud account or RAM user. 'ignoreDelete' = 'false' -- Specify whether to ignore the real-time data that is generated by delete operations. In this example, this parameter is set to false. ); -- Create a temporary table named tablestore_sink for the result table. CREATE TEMPORARY TABLE tablestore_sink( `order` VARCHAR, orderid VARCHAR, customerid VARCHAR, customername VARCHAR, PRIMARY KEY (`order`,orderid) NOT ENFORCED -- Specify the primary key. ) WITH ( 'connector' = 'ots', -- Specify the connector type of the result table. The value is ots and cannot be changed. 'endPoint'='https://xxx.cn-hangzhou.vpc.tablestore.aliyuncs.com', -- Specify the VPC endpoint of the Tablestore instance. 'instanceName' = 'xxx', -- Specify the name of the Tablestore instance. 'tableName' = 'flink_sink_table', -- Specify the name of the result table. 'accessId' = 'xxxxxxxxxxx', -- Specify the AccessKey ID of the Alibaba Cloud account or RAM user. 'accessKey' = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Specify the AccessKey secret of the Alibaba Cloud account or RAM user. 'valueColumns'='customerid,customername' --Specify the names of the columns that you want to insert to the result table. ); -
Escriba la lógica del borrador.
La siguiente sentencia SQL de ejemplo muestra cómo insertar datos de la tabla de origen en la tabla de resultados:
-- Insert data from the source table into the result table. INSERT INTO tablestore_sink SELECT `order`, orderid, customerid, customername FROM tablestore_stream;
Paso 3: (Opcional) Consultar la información de configuración
En la pestaña derecha del editor SQL, puede consultar las configuraciones o configurar los parámetros. La siguiente tabla describe los parámetros.
Nombre de la pestaña | Descripción |
Configurations |
|
Structure |
|
Versions | Muestra el historial de versiones del borrador. Para obtener detalles sobre las funciones en la columna Actions, consulte Manage job versions. |
Paso 4: (Opcional) Realizar una comprobación de sintaxis
La validación comprueba la semántica SQL del trabajo, la conectividad de red y los metadatos de las tablas. También puede hacer clic en SQL Advice en el área de resultados para ver posibles riesgos de SQL y sugerencias de optimización.
En la esquina superior derecha del editor SQL, haga clic en Validate.
En el cuadro de diálogo Validation, haga clic en Confirm.
Paso 5: (Opcional) Depurar el borrador
Puede utilizar la función de depuración para simular la ejecución del despliegue, comprobar las salidas y verificar la lógica de negocio de las sentencias SELECT e INSERT. Esta función mejora la eficiencia del desarrollo y reduce los riesgos de una calidad de datos deficiente.
En la esquina superior derecha del editor SQL, haga clic en Debug.
-
En el cuadro de diálogo Debug, seleccione un clúster de sesión y haga clic en Next.
Si no hay ningún clúster disponible, cree un clúster de sesión. Asegúrese de que el clúster de sesión utilice la misma versión del motor que el borrador SQL y de que el clúster de sesión esté en estado Running. Para obtener más información, consulte Create a session cluster.
-
Configure los datos de depuración.
Si utiliza datos en línea, omita esta operación.
Si desea utilizar datos de depuración, haga clic en Download Debugging Data Template, complete la plantilla con sus datos y luego cargue el archivo. Para obtener más información, consulte Debugging a job.
Después de configurar los datos, haga clic en OK.
Paso 6: Desplegar el borrador
En la esquina superior derecha del editor SQL, haga clic en Deploy. En el cuadro de diálogo Deploy New Version, configure los parámetros de despliegue y haga clic en OK.
Los clústeres de sesión son adecuados para entornos que no son de producción, como entornos de desarrollo y prueba. Puede desplegar o depurar borradores en un clúster de sesión para mejorar la utilización de recursos de un JobManager y acelerar el inicio del despliegue. Sin embargo, se recomienda no desplegar borradores para el entorno de producción en clústeres de sesión; de lo contrario, pueden producirse problemas de estabilidad.
Paso 7: Iniciar el despliegue del borrador y consultar el resultado del cómputo
En el panel de navegación izquierdo, haga clic en O&M > Deployments.
-
En la columna Actions del despliegue deseado, haga clic en Start.
Seleccione Start with no state y haga clic en Start. Un estado Running indica que el despliegue funciona correctamente. Para obtener más información sobre los parámetros de inicio, consulte Start a job.
NotaSe recomienda configurar dos núcleos de CPU y 4 GB de memoria para cada TaskManager en Realtime Compute for Apache Flink con el fin de maximizar las capacidades de cómputo de cada TaskManager. Un TaskManager puede escribir 10,000 filas por segundo.
Si el número de particiones en la tabla de origen es grande, se recomienda establecer la concurrencia en menos de 16 en Realtime Compute for Apache Flink. La tasa de escritura aumenta linealmente con la concurrencia.
-
En la página Deployments, consulte el resultado del cómputo.
En la página O&M > Deployments, haga clic en el nombre del despliegue deseado.
En la pestaña Job logs, haga clic en la pestaña Running task managers y luego haga clic en la tarea deseada en la columna Path,ID.
Haga clic en Logs para consultar la información de registro.
-
(Opcional) Cancelar un despliegue.
Si modifica el código SQL de un despliegue, agrega o elimina parámetros de la cláusula WITH, o cambia la versión de un despliegue, debe desplegar el borrador del despliegue, cancelar el despliegue y luego iniciar el despliegue para que los cambios surtan efecto. Si un despliegue falla y no puede reutilizar los datos de estado para recuperarse, o si desea actualizar la configuración de parámetros que no surten efecto dinámicamente, debe cancelar y luego reiniciar el despliegue. Para obtener más información sobre cómo cancelar un despliegue, consulte Cancel a deployment.