Cette rubrique traite des erreurs courantes liées aux catalogues dans Realtime Compute for Apache Flink, notamment les problèmes rencontrés avec le catalogue Hologres, le catalogue MySQL, le catalogue Hive et l'instruction CREATE TABLE AS (CTAS).
Le job du catalogue Hologres se termine sans consommer de données en temps réel
Symptômes
Le job Flink s'achève après avoir lu les données existantes depuis Hologres, puis se termine. Il n'attend pas l'arrivée de nouveaux enregistrements.
Cause
Par défaut, Realtime Compute for Apache Flink lit les données de Hologres en mode batch et non en mode streaming.
Solution
Ajoutez l'indicateur /*+ OPTIONS('binlog'='true') */ à votre requête SQL pour basculer en mode streaming :
INSERT INTO testfinish
SELECT
col1,
col2,
col3
FROM testsource /*+ OPTIONS ('binlog' = 'true') */
LEFT JION testdim /*+ OPTIONS ('binlog' = 'true') */
ON testsource.co11 = testdim.'col1';
Erreur d'interface CatalogTableProvider avec CREATE TABLE AS
Message d'erreur
org.apache.flink.table.api.ValidationException: SQL validation failed. CREATE TABLE ... AS TABLE ... statement requires target catalog 'XXXXXX' (MongoDBCatalog) implements org.apache.flink.table.catalog.CatalogTableProvider interface. Hint: Please refer the document and use another catalog that supports schema evolution as the target catalog.
Cause
Le catalogue de la table de destination n'implémente pas l'interface CatalogTableProvider et ne peut pas être utilisé avec l'instruction CREATE TABLE AS (CTAS). Par exemple, les catalogues MongoDB ne prennent pas en charge CTAS en tant que destination.
Solution
Basculez vers une table source et une table de destination qui prennent en charge CTAS. Pour obtenir la liste complète des systèmes de stockage pris en charge, consultez la section CREATE TABLE AS (CTAS).
Les requêtes du catalogue MySQL sont lentes ou renvoient des exceptions serveur
Des temps de réponse lents ou des exceptions serveur lors de l'interrogation d'un catalogue MySQL sont généralement causés par une latence réseau élevée ou des connexions instables entre Flink et MySQL. Appliquez la correction adaptée à votre situation.
-- Author: izha****69041.onaliyun.com
-- Created Time: 2022-06-30 14:30:42
-- Description: Write your description here
SELECT
order_id,
SUM(goods_id) AS nm
from
`bi`.`izm_tempfile`.`orders`
GROUP BY order_id
Server response error
com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Unsupported transaction isolation level '-1'
at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:596)
at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:575)
at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115)
at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.HikariDataSource.(HikariDataSource.java:81)
at com.ververica.cdc.connectors.mysql.source.connection.PooledDataSourceFactory.createPooledDataSource(PooledDataSourceFactory.java:35)
at com.ververica.cdc.connectors.mysql.source.connection.JdbcConnectionPools.getOrCreateConnectionPool(JdbcConnectionPools.java:50)
at com.ververica.connectors.mysql.connection.MySqlConnectionProvider.(MySqlConnectionProvider.java:56)
at com.ververica.connectors.mysql.catalog.MySqlCatalog.open(MySqlCatalog.java:149)
at org.apache.flink.table.catalog.CatalogManager.registerCatalog(CatalogManager.java:210)
at org.apache.flink.table.api.internal.TableEnvironmentImpl.createCatalog(TableEnvironmentImpl.java:1320)
at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeInternal(TableEnvironmentImpl.java:1161)
at org.apache.flink.table.sqlserver.execution.OperationExecutorImpl.executeOperation(OperationExecutorImpl.java:434)
at org.apache.flink.table.sqlserver.execution.DelegateOperationExecutor.lambda$executeOperation...
Cause 1 : Bande passante publique insuffisante
Vérifiez si la bande passante publique entre Realtime Compute for Apache Flink et MySQL est trop faible. La bande passante publique par défaut peut être aussi basse que 2 Mbit/s. Vérifiez également si un accès inter-régions est impliqué. Pour savoir comment afficher votre bande passante, consultez la section How do I view the public bandwidth?
Cause 2 : Connexion réseau instable
Augmentez les valeurs des paramètres interactive_timeout et wait_timeout sur votre instance MySQL afin de réduire la fréquence des déconnexions.
Cause 3 : Délai de connexion trop court
Ajoutez l'option 'connect.timeout'='120s' à la clause WITH lors de la création d'une table pour le catalogue MySQL :
-- Add to the WITH clause of your CREATE TABLE statement
'connect.timeout' = '120s'
Impossible d'obtenir un jeton STS depuis le service meta-service d'EMR
Message d'erreur
Caused by: MetaException(message:Initialize DlfMetaStoreClient failed: Initialize DlfMetaStoreClient failed: Cannot obtain STS token from EMR meta-service. Note that AK-Mode[dlf.catalog.akMode] can only used in EMR clusters, otherwise you should config the dlf.catalog.accessKeyId and dlf.catalog.accessKeySecret explicitly.)
at com.aliyun.datalake.metastore.hive2.ProxyMetaStoreClient.createClient(ProxyMetaStoreClient.java:91)
at com.aliyun.datalake.metastore.hive2.ProxyMetaStoreClient.<init>(ProxyMetaStoreClient.java:71)
... 41 more
Cause
Le fichier de configuration hive-site.xml contient le paramètre EMR_AUTO pour dlf.catalog.akMode. Ce paramètre fonctionne uniquement au sein des clusters E-MapReduce (EMR). Son exécution en dehors d'EMR entraîne l'échec de l'initialisation du catalogue Hive.
Solution
Mettez à jour le fichier hive-site.xml dans votre répertoire hive-conf-dir :
-
Supprimez la propriété suivante :
<property> <name>dlf.catalog.akMode</name> <value>EMR_AUTO</value> </property> -
Ajoutez votre AccessKey ID et votre AccessKey Secret :
<property> <name>dlf.catalog.accessKeyId</name> <value>${AccessKeyId}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${AccessKeySecret}</value> </property>
Les modifications de configuration du catalogue dans la console ou via ALTER CATALOG ne prennent pas effet
Cause
Realtime Compute for Apache Flink ne permet pas de modifier la configuration d'un catalogue enregistré. La console ne propose aucune option pour effectuer ces modifications, et l'instruction ALTER CATALOG ne peut pas modifier les configurations des catalogues.
La configuration d'un catalogue tiers, tel que DLF ou Hive, est gérée par son propre service de métadonnées. Les modifications effectuées côté Flink n'affectent pas ces configurations.
Solution
Pour modifier la configuration d'un catalogue enregistré dans la console, supprimez le catalogue et recréez-le avec la nouvelle configuration. Pour plus d'informations, consultez la rubrique de gestion du catalogue correspondant, telle que Manage DLF-Legacy Catalog ou Manage Hive Catalog.
Pour modifier la configuration d'un catalogue tiers lui-même, comme un catalogue DLF, effectuez la modification dans la console du service cloud correspondant.