Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:Apache Iceberg bağlayıcısı

Son Güncelleme:Oct 04, 2026

Bu konuda, Apache Iceberg bağlayıcısının nasıl kullanılacağı açıklanmaktadır.

Genel bilgiler

Apache Iceberg açık kaynaklı bir veri gölü tablo biçimidir. Apache Iceberg kullanarak HDFS veya cloud OSS üzerinde kendi veri gölü depolama hizmetinizi hızla oluşturabilir; Flink, Spark, Hive ve Presto gibi açık kaynaklı büyük veri ekosisteminden gelen işlem motorlarını kullanarak veri gölü analizi yapabilirsiniz.


Kategori


Açıklama


Desteklenen türler


Kaynak tablo, hedef tablo ve veri alımı hedefi


Çalıştırma modları


Toplu iş modu ve akış modu


Veri biçimi


Uygulanamaz


Özel ölçümler


Yok


API türleri


SQL, veri alımı YAML işi


Hedef tablolarındaki verilerin güncellenmesini veya silinmesini destekler


Evet

Özellikler

Apache Iceberg bağlayıcısı aşağıdaki özellikleri sunar:

  • HDFS veya nesne depolama alanı üzerine düşük maliyetli, hafif bir veri gölü depolama hizmeti oluşturur.

  • Tam ACID semantiği sunar.

  • Geçmiş veri sürümlerine erişmek için zaman yolculuğu sorgularını destekler.

  • Verimli veri filtrelemeyi destekler.

  • Şema evrimini destekler.

  • Bölümleme evrimini destekler.

Not

Flink'in hata toleransı ve akış işleme yeteneklerini kullanarak büyük hacimli günlük verilerini gerçek zamanlı olarak bir Apache Iceberg veri gölüne aktarın. Ardından, verilerden değer elde etmek için Flink veya diğer analiz motorlarını kullanabilirsiniz.

Sınırlamalar

  • Apache Iceberg bağlayıcısı yalnızca Ververica Runtime (VVR) 4.0.8 veya sonraki bir sürümü kullanan Realtime Compute for Apache Flink tarafından desteklenir. Apache Iceberg bağlayıcısı, bir Data Lake Formation (DLF) kataloğu ile birlikte kullanılmalıdır. Daha fazla bilgi için bkz. DLF-Legacy kataloglarını yönetme.

  • Apache Iceberg bağlayıcısı, Apache Iceberg v1 ve v2 tablo biçimlerini destekler. Daha fazla bilgi için bkz. Iceberg Tablo Teknik Özellikleri.

    Not

    v2 tablo biçimi yalnızca VVR 8.0.7 veya sonraki bir sürümü kullanan Realtime Compute for Apache Flink tarafından desteklenir.

  • Akış okuma modunda, kaynak tablo olarak yalnızca sadece ekleme yapılabilen (append-only) Iceberg tablolarını kullanabilirsiniz.

Söz dizimi

CREATE TABLE iceberg_table (
  id    BIGINT,
  data  STRING
  PRIMARY KEY(`id`) NOT ENFORCED
)
 PARTITIONED BY (data)
 WITH (
 'connector' = 'iceberg',
  ...
);

WITH seçenekleri

Ortak seçenekler

Parametre

Açıklama

Tür

Gerekli

Varsayılan

Açıklamalar

connector

Bağlayıcı türü.

String

Evet

Yok

Değer iceberg olmalıdır.

catalog-name

Katalog adı.

String

Evet

Yok

İngilizce özel bir ad girin.

catalog-database

Veritabanı adı.

String

Evet

default

Data Lake Formation (DLF) içindeki veritabanınızın adı, örneğin dlf_db.

Not

Bir Data Lake Formation (DLF) veritabanınız yoksa önce bir tane oluşturun.

io-impl

Dağıtılmış dosya sistemi için uygulama sınıfı.

String

Evet

Yok

Değer org.apache.iceberg.aliyun.oss.OSSFileIO olmalıdır.

oss.endpoint

Alibaba Cloud Object Storage Service (OSS) uç noktası.

String

Hayır

Yok

Daha fazla bilgi için bkz. Bölgeler ve Uç Noktalar.

Not
  • oss.endpoint parametresini OSS için VPC uç noktasına ayarlamanız önerilir. Örneğin, China (Hangzhou) bölgesini seçerseniz oss.endpoint parametresini oss-cn-hangzhou-internal.aliyuncs.com olarak ayarlayın.

  • VPC'ler arasında OSS'ye erişmeniz gerekiyorsa bkz. VPC'ler arasında diğer hizmetlere nasıl erişirim?

  • access.key.id: VVR 8.0.6 ve öncesi için

  • access-key-id: VVR 8.0.7 ve sonrası için

Alibaba Cloud hesabınızın AccessKey ID'si.

String

Evet

Yok

Daha fazla bilgi için bkz. AccessKey ID ve AccessKey gizli anahtarı nasıl görüntülenir?

Önemli

AccessKey bilgilerinizin sızmasını önlemek için AccessKey değerlerini belirtmek amacıyla değişkenler kullanmanız önerilir. Daha fazla bilgi için bkz. Proje değişkenleri.

  • access.key.secret: VVR 8.0.6 ve öncesi için

  • access-key-secret: VVR 8.0.7 ve sonrası için

Alibaba Cloud hesabınızın AccessKey gizli anahtarı.

String

Evet

Yok

catalog-impl

Katalogun sınıf adı.

String

Evet

Yok

Değer org.apache.iceberg.aliyun.dlf.DlfCatalog olmalıdır.

warehouse

Tablo verilerini depolamak için kullanılan OSS yolu.

String

Evet

Yok

Yok

dlf.catalog-id

Alibaba Cloud hesap kimliğiniz.

String

Evet

Yok

Hesap kimliğini Kullanıcı Bilgileri sayfasından edinebilirsiniz.

dlf.endpoint

Data Lake Formation (DLF) uç noktası.

String

Evet

Yok

.

Not
  • dlf.endpoint parametresini DLF'nin VPC uç noktasına ayarlamanız önerilir. Örneğin, China (Hangzhou) bölgesini seçerseniz dlf.endpoint parametresini dlf-vpc.cn-hangzhou.aliyuncs.com olarak ayarlayın.

  • VPC'ler arasında DLF'ye erişmeniz gerekiyorsa bkz. Çalışma alanı yönetimi ve işlemleri

dlf.region-id

Data Lake Formation (DLF) bölgesi.

String

Evet

Yok

.

Not

Bölgenin, dlf.endpoint parametresi için belirtilen bölgeyle aynı olduğundan emin olun.

Yalnızca hedefe yönelik seçenekler

Parametre

Açıklama

Tür

Gerekli

Varsayılan

Açıklamalar

write.operation

Yazma işlemi modu.

String

Hayır

upsert

  • upsert (varsayılan): Verileri günceller.

  • insert: Veri ekler.

  • bulk_insert: Mevcut verileri güncellemeden toplu ekleme gerçekleştirir.

hive_sync.enable

Meta verilerin Hive ile senkronize edilip edilmeyeceğini belirtir.

Boolean

Hayır

false

Geçerli değerler:

  • true: Senkronizasyonu etkinleştirir.

  • false (varsayılan): Senkronizasyonu devre dışı bırakır.

hive_sync.mode

Hive meta veri senkronizasyon modu.

String

Hayır

hms

  • hms (varsayılan): Bir DLF kataloğu kullanıyorsanız bu değeri ayarlayın.

  • jdbc: Bir JDBC kataloğu kullanıyorsanız bu değeri ayarlayın.

hive_sync.db

Verilerin senkronize edildiği Hive veritabanının adı.

String

Hayır

Katalogdaki mevcut tablonun veritabanı adı.

Yok

hive_sync.table

Verilerin senkronize edildiği Hive tablosunun adı.

String

Hayır

Mevcut tablonun adı.

Yok

dlf.catalog.region

Data Lake Formation (DLF) bölgesi.

String

Hayır

Yok

.

Not
  • dlf.catalog.region parametresi yalnızca hive_sync.mode parametresi hms olarak ayarlandığında etkili olur.

  • Bölgenin, dlf.catalog.endpoint parametresi için belirtilen bölgeyle aynı olduğundan emin olun.

dlf.catalog.endpoint

Data Lake Formation (DLF) uç noktası.

String

Hayır

Yok

.

Not
  • dlf.catalog.endpoint parametresi yalnızca hive_sync.mode parametresi hms olarak ayarlandığında etkili olur.

  • dlf.catalog.endpoint parametresini DLF'nin VPC uç noktasına ayarlamanız önerilir. Örneğin, China (Hangzhou) bölgesini seçerseniz dlf.catalog.endpoint parametresini dlf-vpc.cn-hangzhou.aliyuncs.com olarak ayarlayın.

  • VPC'ler arasında DLF'ye erişmeniz gerekiyorsa bkz. Çalışma alanı yönetimi ve işlemleri

Veri türü eşlemesi

Iceberg türü

Flink türü

BOOLEAN

BOOLEAN

INT

INT

LONG

BIGINT

FLOAT

FLOAT

DOUBLE

DOUBLE

DECIMAL(P,S)

DECIMAL(P,S)

DATE

DATE

TIME

TIME

Not

Iceberg zaman damgaları mikrosaniye hassasiyetine sahipken Flink zaman damgaları milisaniye hassasiyetine sahiptir. Flink'i kullanarak Iceberg'den veri okuduğunuzda Flink, zaman hassasiyetini milisaniyeye dönüştürür.

TIMESTAMP

TIMESTAMP

TIMESTAMPTZ

TIMESTAMP_LTZ

STRING

STRING

FIXED(L)

BYTES

BINARY

VARBINARY

STRUCT<...>

ROW

LIST<E>

LIST

MAP<K,V>

MAP

Örnekler

Bir OSS paketiniz ve bir Data Lake Formation (DLF) veritabanınız olduğundan emin olun. Daha fazla bilgi için bkz. Paket oluşturma ve Veritabanları, tablolar ve işlevler.

Not

Data Lake Formation (DLF) veritabanınız için bir path belirtirken ${warehouse}/${database_name}.db biçimini izlemeniz önerilir. Örneğin, depo adresi oss://iceberg-test/warehouse ve veritabanı adı dlf_db ise dlf_db için OSS yolunu oss://iceberg-test/warehouse/dlf_db.db olarak ayarlayın.

Hedef tablo örneği

Bu örnekte, Datagen bağlayıcısı kullanılarak rastgele akış verileri oluşturulur ve veriler bir Iceberg tablosuna yazılır.

CREATE TEMPORARY TABLE datagen(
  id    BIGINT,
  data  STRING
) WITH (
  'connector' = 'datagen'
);

CREATE TEMPORARY TABLE dlf_iceberg (
  id    BIGINT,
  data  STRING
) WITH (
  'connector' = 'iceberg',
  'catalog-name' = '<yourCatalogName>',
  'catalog-database' = '<yourDatabaseName>',
  'io-impl' = 'org.apache.iceberg.aliyun.oss.OSSFileIO',
  'oss.endpoint' = '<yourOSSEndpoint>',  
  'access.key.id' = '${secret_values.ak_id}',
  'access.key.secret' = '${secret_values.ak_secret}',
  'catalog-impl' = 'org.apache.iceberg.aliyun.dlf.DlfCatalog',
  'warehouse' = '<yourOSSWarehousePath>',
  'dlf.catalog-id' = '<yourCatalogId>',
  'dlf.endpoint' = '<yourDLFEndpoint>',  
  'dlf.region-id' = '<yourDLFRegionId>'
);

INSERT INTO dlf_iceberg SELECT * FROM datagen;

Kaynak tablo örnekleri

  • Bir DLF kataloğu kullanarak verileri bir Iceberg kaynak tablosundan bir Iceberg hedef tablosuna yazın.

    CREATE TEMPORARY TABLE src_iceberg (
      id    BIGINT,
      data  STRING
    ) WITH (
      'connector' = 'iceberg',
      'catalog-name' = '<yourCatalogName>',
      'catalog-database' = '<yourDatabaseName>',
      'io-impl' = 'org.apache.iceberg.aliyun.oss.OSSFileIO',
      'oss.endpoint' = '<yourOSSEndpoint>',  
      'access.key.id' = '${secret_values.ak_id}',
      'access.key.secret' = '${secret_values.ak_secret}',
      'catalog-impl' = 'org.apache.iceberg.aliyun.dlf.DlfCatalog',
      'warehouse' = '<yourOSSWarehousePath>',
      'dlf.catalog-id' = '<yourCatalogId>',
      'dlf.endpoint' = '<yourDLFEndpoint>',  
      'dlf.region-id' = '<yourDLFRegionId>'
    );
    
    CREATE TEMPORARY TABLE dst_iceberg (
      id    BIGINT,
      data  STRING
    ) WITH (
      'connector' = 'iceberg',
      'catalog-name' = '<yourCatalogName>',
      'catalog-database' = '<yourDatabaseName>',
      'io-impl' = 'org.apache.iceberg.aliyun.oss.OSSFileIO',
      'oss.endpoint' = '<yourOSSEndpoint>',  
      'access.key.id' = '${secret_values.ak_id}',
      'access.key.secret' = '${secret_values.ak_secret}',
      'catalog-impl' = 'org.apache.iceberg.aliyun.dlf.DlfCatalog',
      'warehouse' = '<yourOSSWarehousePath>',
      'dlf.catalog-id' = '<yourCatalogId>',
      'dlf.endpoint' = '<yourDLFEndpoint>',  
      'dlf.region-id' = '<yourDLFRegionId>'
    );
    
    BEGIN STATEMENT SET;
    
    INSERT INTO src_iceberg VALUES (1, 'AAA'), (2, 'BBB'), (3, 'CCC'), (4, 'DDD'), (5, 'EEE');
    INSERT INTO dst_iceberg SELECT * FROM src_iceberg;
    
    END;

Veri alımı

Apache Iceberg bağlayıcısını, veri alımı için bir YAML işinde hedef olarak kullanabilirsiniz.

Söz dizimi

sink:
  type: iceberg
  name: Iceberg Sink
  catalog.properties.rest.signing-region: cn-beijing
  catalog.properties.uri: http://cn-beijing-vpc.dlf.aliyuncs.com/iceberg
  catalog.properties.warehouse: flink_iceberg
  catalog.properties.type: rest
  catalog.properties.io-impl: org.apache.iceberg.rest.DlfFileIO

Parametreler


Parametre


Açıklama


Gerekli


Tür


Varsayılan


Açıklamalar


type


Bağlayıcı türü.


Evet


STRING


Yok


Sabit değer iceberg şeklindedir.


name


Hedefin adı.


Hayır


STRING


Yok


Hedefin adı.


catalog.properties.rest.signing-region


DLF bölge kimliği. Daha fazla bilgi için bkz. Hizmet uç noktaları.


Evet


STRING


Yok


Yok


catalog.properties.uri


DLF REST kataloğuna erişmek için kullanılan URI. Daha fazla bilgi için bkz. Iceberg REST.


Evet


STRING


Yok


Yok


catalog.properties.warehouse


Dosya depolama için kök dizin.


Evet


STRING


Yok


Yok


catalog.properties.warehouse


Dosya depolama için kök dizin.


Hayır


STRING


Yok


Yok


catalog.properties.type


Katalog türü. Değer rest olmalıdır.


Evet


STRING


rest


Yok


catalog.properties.io-impl


Değer org.apache.iceberg.rest.DlfFileIO olmalıdır.


Evet


STRING


org.apache.iceberg.rest.DlfFileIO


Yok


partition.key


Her bölümlemeli tablo için bölümleme anahtarı.


Hayır


STRING


Yok

Birden çok tablo için bölümleme anahtarları ayarlayabilirsiniz. Tablo tanımlarını noktalı virgül (;) ve bölümleme anahtarlarını virgülle (,) ayırın. Örneğin, testdb.table1:id1,id2;testdb.table2:name belirterek testdb.table1 tablosu için bölümleme anahtarlarını id1 ve id2 olarak, testdb.table2 tablosu için bölümleme anahtarını name olarak ayarlayabilirsiniz.

Örtük dönüşümler gerektiren bölümler için dönüşüm işlevini doğrudan bölüm alanına ekleyin. Örnek: testdb.table1:truncate[10](id);testdb.table2:hour(create_time);testdb.table3:day(create_time);testdb.table4:month(create_time);testdb.table5:year(create_time);testdb.table6:bucket[10](create_time).


table.properties.*


Iceberg tablosu oluşturma parametreleri.


Hayır


String


Yok


Daha fazla bilgi için bkz. Iceberg tablo seçenekleri.

Mevcut bir kataloğu yeniden kullanma

VVR 11.5'ten başlayarak, bir Flink CDC veri alımı işinde Veri Yönetimi sayfasında oluşturulan yerleşik bir Iceberg kataloğuna doğrudan başvurabilirsiniz. Bu yaklaşım, gerekli bağlantı özelliği sayısını azaltarak yapılandırmanızı basitleştirir.

sink:
  type: iceberg
  using.built-in-catalog: iceberg_catalog

Veri alımı işleri, tüm Iceberg katalog parametrelerini otomatik olarak yeniden kullanabilir. Bu durum, YAML işinizde catalog.properties. önekiyle parametreleri manuel olarak yapılandırmaya eşdeğerdir.

Yeniden kullanılan parametreleri geçersiz kılmak istiyorsanız ilgili YAML parametrelerini açıkça belirtebilirsiniz. Bu parametreler önceliklidir.

Örnek

Aşağıdaki örnekte, bir DLF kataloğunun Iceberg kataloğu olarak nasıl kullanılacağı ve verilerin Data Lake Formation (DLF) adresine nasıl yazılacağı gösterilmektedir:

  • catalog.properties önekiyle başlayan parametreler hakkında bilgi için bkz. Iceberg DLF kataloğu oluşturma.

    source:
      type: mysql
      name: MySQL Source
      hostname: ${secret_values.mysql.hostname}
      port: ${mysql.port}
      username: ${secret_values.mysql.username}
      password: ${secret_values.mysql.password}
      tables: ${mysql.source.table}
      server-id: 8601-8604
    
    sink:
      type: iceberg
      name: Iceberg Sink
      catalog.properties.rest.signing-region: cn-beijing
      catalog.properties.uri: http://cn-beijing-vpc.dlf.aliyuncs.com/iceberg
      catalog.properties.warehouse: flink_iceberg
      catalog.properties.type: rest
      catalog.properties.io-impl: org.apache.iceberg.rest.DlfFileIO

Şema değişiklikleri

Veri alımı hedefi olarak kullanıldığında Apache Iceberg bağlayıcısı aşağıdaki şema değişikliklerini destekler:

  • CREATE TABLE

  • ADD COLUMN

  • ALTER COLUMN TYPE (Birincil anahtar sütununun türünün değiştirilmesi desteklenmez.)

  • RENAME COLUMN

  • DROP COLUMN

  • TRUNCATE TABLE

  • DROP TABLE

Not

Aşağı akıştaki Iceberg tablosu zaten varsa iş, mevcut tablo şemasını yazma işlemleri için kullanır ve tabloyu yeniden oluşturmaz.

İlgili belgeler

Flink tarafından desteklenen bağlayıcılar hakkında daha fazla bilgi için bkz. Desteklenen bağlayıcılar.