Anda dapat men-debug program yang menggunakan konektor Realtime Compute for Apache Flink di mesin lokal. Hal ini membantu Anda memverifikasi kebenaran kode, mengidentifikasi serta menyelesaikan masalah, dan menghemat biaya migrasi cloud.
Informasi latar belakang
Saat men-debug program Flink yang menggunakan konektor Realtime Compute for Apache Flink di IntelliJ IDEA, mungkin terjadi kesalahan kelas terkait konektor tidak ditemukan. Sebagai contoh, saat men-debug program yang menggunakan MaxCompute konektor, pengecualian berikut dapat terjadi:
Caused by: java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.odps.newsource.split.OdpsSourceSplitSerializer
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)Kesalahan ini disebabkan karena kelas waktu proses tertentu tidak tersedia dalam JAR konektor default.
Untuk menambahkan kelas yang hilang, ikuti langkah-langkah berikut.
Prosedur
Langkah 1: Tambahkan dependensi
Unduh paket JAR uber konektor yang berisi kelas waktu proses dari repositori pusat Maven.
Sebagai contoh, jika versi dependensi ververica-connector-odps dari MaxCompute konektor adalah 1.17-vvr-8.0.11-1, Anda perlu mengunduh paket
ververica-connector-odps-1.17-vvr-8.0.11-1-uber.jardari direktori repositori pusat Maven ke direktori lokal Anda.Saat mendapatkan lingkungan eksekusi, atur parameter
pipeline.classpathske jalur paket JAR uber.Jika ada beberapa dependensi konektor, pisahkan jalur paket dengan titik koma (;). Sebagai contoh, Anda dapat mengatur parameter ini ke
file:///path/to/a-uber.jar;file:///path/to/b-uber.jar. Di Windows, tambahkan nama disk terkait ke jalur, sepertifile:///D:/path/to/a-uber.jar;file:///E:/path/to/b-uber/jar. Contoh kode berikut menunjukkan konfigurasi untuk program DataStream:Configuration conf = new Configuration(); conf.setString("pipeline.classpaths", "file://" + "Jalur absolut paket JAR uber. StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);Contoh kode berikut menunjukkan konfigurasi untuk program Table API:
Configuration conf = new Configuration(); conf.setString("pipeline.classpaths", "file://" + "Jalur absolut paket JAR uber. EnvironmentSettings envSettings = EnvironmentSettings.newInstance().withConfiguration(conf).build(); TableEnvironment tEnv = TableEnvironment.create(envSettings);
Sebelum mengunggah JAR yang dikompilasi ke Realtime Compute for Apache Flink, hapus konfigurasi
pipeline.classpaths.Untuk men-debug program Flink yang menggunakan konektor MaxCompute di tempat dan berjalan pada versi framework lebih lama dari
1.17-vvr-8.0.11-1, gunakan paket JAR uber konektor1.17-vvr-8.0.11-1. Saat membangun JAR program untuk penerapan cloud, Anda dapat menyertakan versi lama paket JAR uber konektor, tetapi pastikan menghapus opsi konektor yang hanya didukung oleh versi framework yang lebih baru.Untuk men-debug program yang menggunakan konektor MySQL, konfigurasikan dependensi di Maven sesuai instruksi di Debug Program DataStream yang Mencakup Konektor MySQL.
Selama debugging lokal, pastikan konektivitas jaringan antara aplikasi Flink dan layanan hulu/hilir. Anda memiliki dua opsi:
Jalankan layanan hulu/hilir secara lokal di jaringan yang sama dengan Flink.
Untuk menggunakan layanan cloud sebagai sumber atau tujuan data, verifikasi bahwa Flink dapat mengaksesnya melalui Internet. Selain itu, tambahkan alamat IP publik perangkat Anda ke daftar putih layanan cloud.
Langkah 2: Konfigurasikan paket JAR ClassLoader yang diperlukan untuk menjalankan pekerjaan
Untuk memungkinkan Flink memuat kelas runtime konektor, tambahkan paket JAR ClassLoader ke konfigurasi:
Klik untuk mengunduh paket JAR ClassLoader berdasarkan versi VVR Anda:
Buka file program di IntelliJ IDEA.
Klik ikon hijau di sebelah kiri kelas entri untuk memperluas menu.

Pilih Modify Run Configuration....

Di jendela yang muncul, klik Modify options.

Dalam daftar drop-down Add Run Options, pilih opsi Modify classpath pada bagian Java.
Bagian Modify classpath akan muncul di jendela.
Di bagian Modify classpath, klik ikon +, pilih Include, dan pilih JAR ClassLoader yang telah diunduh.
Simpan konfigurasi.
CatatanJika pesan kesalahan menunjukkan kelas Flink umum yang hilang, klik Modify options dan pilih Add dependencies with "provided" scope to classpath.
Debug pekerjaan Table API
Mulai dari VVR 11.1, konektor Realtime Compute for Apache Flink tidak lagi sepenuhnya kompatibel dengan paket flink-table-common milik Apache Flink. Anda mungkin mengalami kesalahan berikut saat menjalankan pekerjaan yang menggunakan Table API:
java.lang.ClassNotFoundException: org.apache.flink.table.factories.OptionUpgradabaleTableFactorySolusi: Perbarui file pom.xml Anda. Ganti org.apache.flink:flink-table-common dengan com.alibaba.ververica:flink-table-common, pastikan menggunakan versi yang benar.
Referensi
Jika ingin membaca dan menulis data dalam mode DataStream, gunakan jenis terkait konektor DataStream untuk terhubung ke Realtime Compute for Apache Flink. Untuk informasi lebih lanjut tentang penggunaan konektor DataStream dan tindakan pencegahan, lihat Kembangkan Draf JAR.
Untuk informasi lebih lanjut tentang cara mengembangkan dan men-debug draf Python API, lihat Kembangkan Draf Python API.