Topik ini mencakup kesalahan katalog umum di Realtime Compute for Apache Flink, termasuk masalah terkait Hologres Catalog, katalog MySQL, katalog Hive, dan pernyataan CREATE TABLE AS (CTAS).
Pekerjaan Hologres Catalog berakhir tanpa mengonsumsi data secara real time
Gejala
Pekerjaan Flink selesai setelah membaca data yang sudah ada dari Hologres, lalu keluar. Pekerjaan tersebut tidak menunggu kedatangan catatan baru.
Penyebab
Secara default, Realtime Compute for Apache Flink membaca data dari Hologres dalam mode batch, bukan mode streaming.
Solusi
Tambahkan petunjuk /*+ OPTIONS('binlog'='true') */ ke kueri SQL Anda untuk beralih ke 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';
Kesalahan antarmuka CatalogTableProvider dengan CREATE TABLE AS
Pesan error
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.
Penyebab
Katalog tabel sink tidak mengimplementasikan antarmuka CatalogTableProvider dan tidak dapat digunakan dengan pernyataan CREATE TABLE AS (CTAS). Sebagai contoh, katalog MongoDB tidak mendukung CTAS sebagai sink.
Solusi
Gunakan tabel sumber dan tabel sink yang mendukung CTAS. Untuk daftar lengkap sistem penyimpanan yang didukung, lihat CREATE TABLE AS (CTAS).
Kueri katalog MySQL lambat atau mengembalikan exception server
Respons kueri yang lambat atau exception server saat mengkueri katalog MySQL biasanya disebabkan oleh latensi jaringan tinggi atau koneksi tidak stabil antara Flink dan MySQL. Terapkan solusi yang sesuai dengan situasi Anda.
-- Penulis: izha****69041.onaliyun.com
-- Waktu Dibuat: 2022-06-30 14:30:42
-- Deskripsi: Tulis deskripsi Anda di sini
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...
Penyebab 1: Bandwidth publik tidak mencukupi
Periksa apakah bandwidth publik dari Realtime Compute for Apache Flink ke MySQL terlalu rendah. Bandwidth publik default bisa serendah 2 Mbit/s. Periksa juga apakah akses dilakukan lintas wilayah. Untuk petunjuk cara melihat bandwidth Anda, lihat Bagaimana cara melihat bandwidth publik?
Penyebab 2: Koneksi jaringan tidak stabil
Tingkatkan nilai parameter interactive_timeout dan wait_timeout pada instans MySQL Anda untuk mengurangi frekuensi putus koneksi.
Penyebab 3: Timeout koneksi terlalu singkat
Tambahkan opsi 'connect.timeout'='120s' ke klausa WITH saat membuat tabel untuk katalog MySQL:
-- Tambahkan ke klausa WITH pada pernyataan CREATE TABLE Anda
'connect.timeout' = '120s'
Tidak dapat memperoleh token STS dari meta-service EMR
Pesan error
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
Penyebab
File konfigurasi hive-site.xml berisi pengaturan EMR_AUTO untuk dlf.catalog.akMode. Pengaturan ini hanya berfungsi di dalam kluster E-MapReduce (EMR). Menjalankannya di luar EMR menyebabkan inisialisasi katalog Hive gagal.
Solusi
Perbarui hive-site.xml di direktori hive-conf-dir Anda:
-
Hapus properti berikut:
<property> <name>dlf.catalog.akMode</name> <value>EMR_AUTO</value> </property> -
Tambahkan ID AccessKey dan Rahasia AccessKey Anda:
<property> <name>dlf.catalog.accessKeyId</name> <value>${AccessKeyId}</value> </property> <property> <name>dlf.catalog.accessKeySecret</name> <value>${AccessKeySecret}</value> </property>
Perubahan konfigurasi katalog di Konsol atau melalui ALTER CATALOG tidak berlaku
Penyebab
-
Realtime Compute for Apache Flink tidak mendukung modifikasi konfigurasi katalog yang telah terdaftar. Konsol tidak menyediakan entri untuk modifikasi semacam itu, dan pernyataan ALTER CATALOG tidak dapat mengubah konfigurasi katalog.
-
Konfigurasi katalog pihak ketiga, seperti DLF atau Hive, dikelola oleh layanan metadata-nya sendiri. Perubahan yang dilakukan di sisi Flink tidak memengaruhi konfigurasi tersebut.
Solusi
-
Untuk mengubah konfigurasi katalog yang terdaftar di Konsol, hapus katalog tersebut dan buat ulang dengan konfigurasi baru. Untuk informasi lebih lanjut, lihat topik manajemen katalog yang sesuai, seperti Mengelola Katalog DLF-Legacy atau Mengelola Katalog Hive.
-
Untuk mengubah konfigurasi katalog pihak ketiga itu sendiri, seperti katalog DLF, lakukan modifikasi di Konsol layanan cloud yang sesuai.