Conecte Apache Flink a LindormTable y utilice las tablas de Lindorm como tablas de dimensiones o tablas de resultados en sus trabajos de Flink. Puede acceder a estas tablas mediante Flink SQL o Flink DataStream.
Contexto
Puede utilizar Lindorm LindormTable como tabla de dimensiones o tabla de resultados en Flink, y acceder a LindormTable a través de Flink SQL o Flink DataStream.
Elección del método de conexión
En LindormTable, las tablas se dividen en dos tipos según su forma de creación: tablas HBase (tablas creadas y escritas mediante la API de HBase) y tablas SQL (tablas creadas y escritas mediante Lindorm SQL). El acceso a estos dos tipos de tablas requiere interfaces diferentes. Por lo tanto, antes de crear una tarea de Flink, debe determinar el tipo de conector y, posteriormente, definir la dirección de conexión de LindormTable según dicho tipo de conector.
Determinación del tipo de tabla al que se accederá
En Lindorm, puede utilizar Lindorm SQL para determinar el tipo de LindormTable al que necesita acceder un trabajo de Flink en desarrollo:
Utilice lindorm-cli (o directamente Lindorm Insight o DMS) para conectarse al motor de tablas anchas de Lindorm.
-
Ejecute la siguiente sentencia SQL para comprobar el atributo
IS_HBASE_LIKEde la tabla.Si el valor del atributo es TRUE, la tabla es una tabla HBase.
Si el valor del atributo es FALSE, la tabla es una tabla SQL.
SHOW TABLE VARIABLES FROM table_name LIKE 'IS_HBASE_LIKE';
Para obtener información sobre cómo usar
lindorm-clipara conectarse al motor de tablas anchas, consulte Connect to and use the wide table engine with Lindorm-cli.Para consultar la sintaxis detallada de
SHOW TABLE VARIABLE, consulte SHOW VARIABLES.
Elección del tipo de conector
Según la versión del producto Flink que haya seleccionado, decida qué conector utilizar para acceder a LindormTable.
|
Tipo de tabla |
Flink de la comunidad |
Realtime Compute for Apache Flink |
|
Tabla HBase |
Conector HBase de código abierto (Compatible como tabla de dimensiones y tabla de resultados) |
Cloud-native multi-model database Lindorm connector (Compatible como tabla de dimensiones y tabla de resultados) |
|
Tabla SQL |
Conector JDBC de código abierto (Compatible como tabla de resultados) |
Cloud-native multi-model database Lindorm connector (Compatible como tabla de dimensiones y tabla de resultados) |
Realtime Compute for Apache Flink es un servicio administrado de Flink en Alibaba Cloud. Para obtener más información, consulte Realtime Compute for Apache Flink. Tenga en cuenta que un clúster de Flink creado con Flink de código abierto en Alibaba Cloud ECS sigue clasificándose como Flink de la comunidad en la tabla anterior.
Obtención de la información de conexión de LindormTable
Escenario 1: Uso del conector HBase de código abierto o del conector de base de datos multimodelo nativa de la nube Lindorm. En este escenario, la dirección de conexión debe ser la dirección de acceso de la API de Java para HBase (VPC) del motor de tablas anchas. En la página de detalles de la instancia de Lindorm, haga clic en Database connections en el menú lateral izquierdo y seleccione la pestaña Wide Table Engine. En el área Connect through HBase-compatible address, obtenga la dirección VPC con el formato
ld-<instance-ID>-proxy-lindorm.lindorm.rds.aliyuncs.com:30020. En el área Connect through MySQL-compatible address, obtenga la dirección compatible con MySQL con el formatold-<instance-ID>-proxy-sql-lindorm.lindorm.rds.aliyuncs.com:33060.Escenario 2: Uso del conector JDBC. En este escenario, la dirección de conexión debe ser la dirección compatible con MySQL (VPC) del motor de tablas anchas. En la página de detalles de la instancia de Lindorm, haga clic en Database connections en el panel de navegación izquierdo y seleccione la pestaña Wide Table Engine. En el área Connect through HBase-compatible address, puede ver la dirección VPC de la API de Java para HBase (con el formato
ld-<instance-ID>-proxy-lindorm.lindorm.rds.aliyuncs.com:30020).
Si la tarea de Flink utiliza un usuario de Lindorm recién creado para acceder a LindormTable, asegúrese de que el usuario tenga permisos de lectura y escritura en las tablas de Flink. Para obtener información sobre cómo otorgar permisos, consulte Grant permissions to specified users.
Para obtener descripciones detalladas de las diversas direcciones de conexión de las tablas anchas de Lindorm, consulte View the connection addresses of the wide table engine.
Método para que un trabajo de Flink acceda a LindormTable
Puede desarrollar siguiendo el enfoque general del framework de computación en tiempo real seleccionado. Para acceder a LindormTable en un trabajo, consulte los siguientes documentos según el conector que haya elegido para habilitar el acceso de su trabajo de computación a LindormTable.
Requisitos previos
-
Desarrollo de un trabajo que utiliza Flink de la comunidad para acceder a LindormTable
Para usar el conector HBase de código abierto y acceder a LindormTable, asegúrese de que el motor de tablas anchas sea de la versión 2.4.3 o posterior.
Para usar el conector JDBC de código abierto y acceder a LindormTable, asegúrese de que el motor de tablas anchas sea de la versión 2.6.5.2 o posterior, y de haber completado Enable the MySQL compatibility feature.
Para obtener información sobre cómo ver o actualizar la versión actual, consulte LindormTable release notes y Upgrade the minor engine version of a Lindorm instance.
Si utiliza Realtime Compute for Apache Flink para desarrollar un trabajo que acceda a LindormTable, no existe ninguna restricción de versión para el motor de tablas anchas.
Asegúrese de que el entorno donde se encuentra el clúster de Flink tenga conectividad de red con la instancia de Lindorm, y de que las direcciones IP del cliente estén agregadas a la lista blanca de Lindorm. Para obtener información sobre cómo agregar direcciones IP a la lista blanca, consulte Configure a whitelist.
Desarrollo de trabajos con Flink de la comunidad
Conector HBase de código abierto
Cuando utilice Flink de la comunidad para desarrollar un trabajo que acceda a tablas HBase, si desea acceder a las tablas a través de Internet, o si la instancia de Lindorm de destino es una instancia de nodo único de Lindorm, debe actualizar el SDK y cambiar la configuración antes de realizar operaciones posteriores.
Para obtener más detalles, consulte el Paso 1 en Connect to and use LindormTable using the HBase Java API.
Para obtener información sobre cómo usar el conector HBase de código abierto para crear una tabla de dimensiones y una tabla de resultados, consulte la documentación del conector HBase.
Conector JDBC de código abierto
Cuando utilice el conector JDBC de código abierto para acceder a una LindormTable, actualmente solo se admite el uso de LindormTable como tabla de resultados. Para conocer el uso general, consulte la documentación oficial del conector JDBC. No obstante, hay algunos puntos que requieren atención especial, como se indica a continuación:
-
Requisitos de dependencias. En comparación con la amplia gama de versiones de paquetes de dependencias mencionadas en la documentación oficial, las versiones de los paquetes de dependencias que utiliza el conector JDBC para acceder a LindormTables están restringidas actualmente a la siguiente lista:
flink-connector-jdbc-core-4.0.0-2.0.jarflink-connector-jdbc-mysql-4.0.0-2.0.jarmysql-connector-j-8.3.0.jar
El paquete de dependencias del controlador JDBC de MySQL se puede descargar desde la comunidad.
-
Parámetros del conector JDBC. Dado que no se admite su uso como tabla de origen ni como tabla de dimensiones, los parámetros relacionados con la funcionalidad de tabla de origen y tabla de dimensiones no son compatibles (como los parámetros con prefijo scan, por ejemplo
scan.fetch-size, y los parámetros con prefijolookup, comolookup.cache). Recomendaciones para algunos parámetros del conector JDBC:url: Se recomienda seguir Use Java JDBC APIs to develop applications para la configuración.
username: Utilice el nombre de usuario creado en la instancia de Lindorm.
password: La contraseña del nombre de usuario.
connector, table-name: Siga las recomendaciones de la comunidad del conector JDBC.
Parámetros sink: Realice ajustes finos (fine-tune) según la situación real del trabajo.
-
Asignación de tipos de datos. La asignación entre los tipos de datos de Flink y los tipos de datos de Lindorm generalmente puede seguir la de los tipos de datos de MySQL (consulte la sección Asignación de tipos de datos del conector JDBC). Sin embargo, algunos tipos de datos en Lindorm no coinciden con los de MySQL. Por ejemplo, los siguientes tipos de MySQL que se indican como compatibles en el conector JDBC no son admitidos por Lindorm:
Tipo MEDIUMINT
Tipo DATETIME
Tipos UNSIGNED distintos de BIGINT UNSIGNED
El siguiente ejemplo utiliza Flink SQL para definir un trabajo que accede a una LindormTable mediante el conector JDBC. En este ejemplo, se asume que ya se ha definido una tabla llamada testflink en el motor de tablas anchas de Lindorm.
# Create Flink table and start the job
CREATE TABLE source_table(
c1 INT,
c2 STRING
) WITH (
'connector' = 'datagen',
'rows-per-second' = '2',
'fields.c2.length' = '5',
'fields.c1.min' = '1',
'fields.c1.max' = '100'
);
CREATE TABLE sink_table(
c1 INT,
c2 STRING
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://ld-xxxxx-proxy-lindorm.lindorm.rds.aliyuncs.com:33060/default?sslMode=disabled&allowPublicKeyRetrieval=true&useServerPrepStmts=true&useLocalSessionState=true&rewriteBatchedStatements=true&cachePrepStmts=true&prepStmtCacheSize=300&prepStmtCacheSqlLimit=50000000',
'username' = 'root',
'password' = 'root',
'table-name' = 'testflink'
);
INSERT INTO sink_table SELECT * FROM source_table;
Desarrollo de trabajos con Realtime Compute for Apache Flink
Conector de base de datos multimodelo nativa de la nube Lindorm
En el desarrollo de trabajos de Realtime Compute for Apache Flink, puede desarrollar trabajos que accedan al motor de tablas anchas de Lindorm mediante Flink SQL. Para obtener detalles sobre el desarrollo de trabajos en Realtime Compute for Apache Flink, consulte Job development overview.
Para obtener información sobre cómo usar el conector para crear una tabla de dimensiones y una tabla de resultados, consulte Cloud-native multi-model database Lindorm connector documentation.