全部产品
Search
文档中心

Realtime Compute for Apache Flink:Memodifikasi tabel sumber

更新时间:Jun 19, 2025

Topik ini menjelaskan kompatibilitas antara pekerjaan dan data status yang digunakan untuk memulai pekerjaan setelah Anda memodifikasi tabel sumber yang didefinisikan dalam pernyataan SQL untuk pekerjaan tersebut.

Informasi latar belakang

Jika Anda memodifikasi skema yang didefinisikan dalam pernyataan DDL untuk membuat tabel sumber, sistem menentukan kompatibilitas berdasarkan seluruh kueri yang mencakup tabel tersebut. Jika Anda memodifikasi klausa WITH, sistem hanya mendeteksi perubahan pada parameter konektor selama pemeriksaan kompatibilitas.

Modifikasi yang kompatibel

  • Sepenuhnya atau sebagian kompatibel: Memodifikasi bidang tanpa memengaruhi kompatibilitas status operator hilir.

    -- Pernyataan SQL asli: 
    create table MyTable (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector'='datagen'
    );
    
    select a, sum(b), max(c) from MyTable group by a;
    
    
    -- Menambahkan bidang d adalah perubahan yang sepenuhnya kompatibel. 
    -- Ini karena bidang d tidak digunakan dalam pernyataan SELECT. 
    create table MyTable (
      a int,
      b bigint,
      c varchar,
      d int
    ) with (
      'connector'='datagen'
    );
    
    select a, sum(b), max(c) from MyTable group by a;
    
    
    -- Mengubah bidang b menjadi b as d + 1 adalah modifikasi yang sebagian kompatibel. 
    -- Hasil perhitungan dari max(c) tidak terpengaruh. Bidang sum(b) asli dianggap dihapus karena kolom b dimodifikasi. 
    -- Data status dari bidang sum(b) asli dibuang. Bidang sum(b) baru dianggap ditambahkan, dan nilai bidang bertambah saat pekerjaan dimulai. 
    create table MyTable (
      a int,
      d bigint,
      c varchar,
      b as d + 1
    ) with (
      'connector'='datagen'
    );
    
    select a, sum(b), max(c) from MyTable group by a;
  • Sepenuhnya kompatibel: Memodifikasi interval watermark.

  • Memodifikasi kunci utama dapat memengaruhi kompatibilitas status operator hilir. Sebagai contoh, memodifikasi kunci upsert dapat menyebabkan masalah kompatibilitas.

  • Memodifikasi kunci utama atau kolom yang digunakan untuk sharding dalam klausa WITH dapat memengaruhi kompatibilitas status tabel sumber. Sebagai contoh, jika Anda memodifikasi parameter scan.incremental.snapshot.chunk.key-column untuk konektor MySQL, data status tabel sumber untuk fase pemindaian penuh mungkin tidak tersedia.

  • Jika jenis peristiwa yang dikirim ke operator hilir berubah karena mode changelog diubah, kompatibilitas status operator hilir mungkin terpengaruh. Contoh jenis peristiwa meliputi DELETE, UPDATE_BEFORE, dan UPDATE_AFTER. Contoh modifikasi yang dapat mengubah jenis peristiwa: (1) Memodifikasi parameter cdcMode dalam klausa WITH untuk konektor Hologres. Parameter ini menentukan apakah akan menggunakan Change Data Capture (CDC) untuk membaca log biner. (2) Memodifikasi pengaturan pembacaan log biner dalam mode UPSERT untuk konektor MongoDB atau PostgreSQL.

Modifikasi yang tidak kompatibel

  • Memodifikasi tipe konektor.

    -- Pernyataan SQL asli: 
    create table MyTable (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector'='datagen'
    );
    
    select a, sum(b), max(c) from MyTable group by a;
    
    
    -- Tidak kompatibel: Mengubah tipe konektor dari datagen menjadi kafka. 
    create table MyTable (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector'='kafka', 
      ...
    );
    
    select a, sum(b), max(c) from MyTable group by a;
  • Memodifikasi nama tabel.

    -- Pernyataan SQL asli: 
    create table MyTable (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector'='datagen'
    );
    select a, sum(b), max(c) from MyTable group by a;
    
    
    -- Tidak kompatibel: Mengubah nama tabel dari MyTable menjadi MyTable2. 
    create table MyTable2 (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector'='datagen'
    );
    
    select a, sum(b), max(c) from MyTable2 group by a;
  • Memodifikasi bidang yang memengaruhi kompatibilitas status operator hilir.

    -- Pernyataan SQL asli: 
    create table MyTable1 (
      a int,
      b bigint
    ) with (
      'connector'='datagen'
    );
    
    create table MyTable2 (
      c int,
      d bigint
    ) with (
      'connector'='datagen'
    );
    
    select * from MyTable1 join MyTable2 on c = d;
    
    
    -- Tidak kompatibel: Menambahkan bidang e ke tabel MyTable2. 
    -- Ini mengakibatkan perubahan pada bidang input operasi join. 
    create table MyTable1 (
      a int,
      b bigint
    ) with (
      'connector'='datagen'
    );
    
    create table MyTable2 (
      c int,
      d bigint,
      e varchar
    ) with (
      'connector'='datagen'
    );
    
    -- Pernyataan SQL asli: 
    select * from MyTable1 join MyTable2 on c = d;