Kurs
Büyük veri işleme ile çalışıyorsanız, düzensiz veri dosyalarını yönetmenin ve analiz etmenin zor ve hataya açık olabileceğini bilirsiniz. Yanlışlıkla bir silme komutu gibi basit bir hata nedeniyle değerli verileri kaybetme riski sürekli bir endişe kaynağıdır.
Apache Iceberg, geri alma (rollback) ve verilerinizin önceki durumlarını geri yükleme desteği sunan sağlam ve güvenilir bir tablo biçimi sağlayarak bu zorluklara çözüm getirir. Bu, veri bütünlüğü ve tutarlılığını güvence altına alır, veri yönetimini daha verimli ve daha az hataya açık hale getirir.
Bu eğitimde, Apache Iceberg’in ne olduğunu, neden kullanıldığını ve nasıl çalıştığını açıklayacağız. Ayrıca, adım adım uygulamalı yönergelerle nasıl başlayacağınızı öğrenerek verilerinizi daha etkili şekilde yönetip analiz edebileceksiniz.
Apache Iceberg Nedir?
Apache Iceberg, çok büyük analitik veri kümelerini verimli şekilde yönetmek için tasarlanmış açık bir tablo formatıdır. SQL sorgulama, ACID uyumluluğu ve bölümleme (partitioning) gibi geleneksel veritabanlarının avantajlarını veri dosyalarınıza taşıyan yüksek performanslı bir tablo yapısı sunar.
Özetle, Apache Iceberg bir mercek gibi davranır; bir dizi veri dosyasını tek ve tutarlı bir tabloymuş gibi görmenizi ve yönetmenizi sağlar.
Apache Iceberg’in başlıca avantajı, büyük ölçekli verileri son derece optimize bir şekilde işleyebilmesidir. Şema evrimi, gizli bölümleme ve zaman yolculuğu gibi özellikleri destekleyerek karmaşık veri iş akışlarını yönetmek için güçlü bir çözüm sunar.
Altyapıdaki depolama formatlarının karmaşıklıklarını soyutlayarak Iceberg, verimli veri yönetimi ve sorgulama imkânı sağlar; bu da onu büyük veri işleme için ideal bir seçenek haline getirir.
Apache Iceberg’in geçmişi
Netflix, özellikle artımlı işleme ve akış verilerini ele alma konusundaki Hive sınırlamalarını gidermek için 2017’de Apache Iceberg’i geliştirdi. 2018’de Netflix, Iceberg’i Apache Software Foundation’a bağışlayarak açık kaynaklı bir proje haline getirdi.
O zamandan beri Apache Iceberg, modern veri gölü mimarilerinin temel taşlarından biri haline geldi ve çeşitli sektörlerde geniş çapta benimsendi.
Proje, büyük ölçekli veri ortamlarının ihtiyaçlarını karşılamak için gizli bölümleme ve şema evrimi gibi özellikleri sürekli olarak bünyesine kattı.
2024’te Databricks, Apache Iceberg’in orijinal yaratıcıları tarafından kurulan bir veri yönetimi şirketi olan Tabular’ı satın alma anlaşmasını duyurdu. Bu satın alma, Apache Iceberg ve Delta Lake’i birleştirerek veri uyumluluğunu artırmayı ve tek, açık bir birlikte çalışabilirlik standardına doğru evrimi hızlandırmayı amaçlıyor.
Apache Iceberg evrim zaman çizelgesi
|
Yıl |
Olay |
|
2017 |
Netflix, özellikle artımlı işleme ve akış verileri için Hive’daki sınırlamaları gidermek üzere Apache Iceberg’i geliştirir. |
|
2018 |
Netflix, Apache Iceberg’i Apache Software Foundation’a bağışlar ve proje açık kaynak olur. |
|
2019 |
Apache Iceberg, ölçeklenebilir ve verimli veri yönetimi yetenekleri nedeniyle çeşitli sektörlerce benimsenir. Şema evrimi ve gizli bölümleme gibi özellikler tanıtılır. |
|
2020 |
Topluluk katkıları ve benimseme artmaya devam eder; performans iyileştirmeleri ve zaman yolculuğu ile meta veri yönetimi gibi yeni özellikler eklenir. |
|
2021 |
Apache Iceberg, veri gölleri için tercih edilen tablo formatı olarak önemli ivme kazanır ve başlıca büyük veri araç ve platformlarıyla entegre olur. |
|
2022 |
Yeni özellikler ve optimizasyonlar eklenir; Iceberg’in karmaşık veri iş akışları ve büyük ölçekli veri ortamları için desteği güçlenir. |
|
2023 |
Apache Iceberg, diğer veri formatları ve sistemleriyle veri uyumluluğu ve birlikte çalışabilirliği iyileştirmeye odaklanarak evrimini sürdürür. |
|
2024 |
Databricks, Tabular’ı satın alma anlaşmasını duyurdu. Bu satın alma, Iceberg ve Delta Lake’i birleştirmeyi amaçlıyor. |
Apache Iceberg Ne İçin Kullanılır?
Daha önce gördüğümüz gibi, Apache Iceberg büyük ölçekli ortamlarda veri yönetimi ve analitiği için güçlü bir araçtır.
İşte Apache Iceberg’in kullanım alanlarına daha özel bir bakış.
Veri analizi
ORC veya Parquet gibi dosya formatlarını kullanmak uygulamada kolaydır, ancak bunlar üzerinde analiz çalıştırmak verimsizdir. Iceberg ise sorguları optimize etmek için bu formatlara meta veri bilgileri içeren bir tablo biçimi sağlar.
Örneğin, ham veri dosyaları hangi tabloya ait olduklarına dair bilgi tutmazken, Iceberg’in meta veri dosyaları bunu yapar. Bu sayede sorgu motorları hangi tabloların okunacağına ve hangilerinin atlanacağına karar verebilir; bu da sorgu verimliliğini önemli ölçüde artırır.
Meta veri dosyaları, verimli sorgulama için bu tür bilgileri depolar. Sorgulama dilleri önce meta veride ilgili dosya adını arar ve yalnızca o dosyayı getirerek gereksiz veri okumalarını azaltıp hızlı sorgulama sağlar.
Bölüm budama (partition pruning)
Bölüm budama, ilgisiz verileri atlayıp yalnızca gerekli veriler üzerinde işlem yapan bir tekniktir.
Örneğin, bölüm sütununuz "date" ise ve belirli bir tarih aralığı belirtirseniz, sorgu yalnızca bu aralıktaki verileri okur. Bu, diskten okunan veri miktarını azaltır ve Iceberg tablolarında sorgulamayı daha hızlı ve verimli hale getirir.
Zaman yolculuğu
Zaman yolculuğu, belirli bir zamandaki anlık görüntüleri (snapshot) getirerek verilerinizin eski sürümlerine erişmenizi sağlayan bir özelliktir.
Anlık görüntü, belirli bir andaki veri dosyalarının eksiksiz bir kümesidir.
Meta veri dosyaları, anlık görüntü kimliklerini, zaman damgalarını ve geçmiş ayrıntılarını takip eder; böylece her anlık görüntüye kimliği veya zaman damgası ile erişebilirsiniz.
Entegrasyonlar
Google Cloud, AWS ve Microsoft Azure gibi birçok popüler depolama sistemi Iceberg tablo formatını destekler. Veri dosyalarınızı bu bulut platformlarında depolayabilir ve meta verilerine işaret etmek için harici ya da yerleşik bir katalog hizmeti kullanabilirsiniz.
Katalog hizmetini yapılandırdıktan sonra Apache Spark veya Apache Flink gibi büyük veri işleme çerçevelerini kullanabilirsiniz.
Iceberg ayrıca SQL, Trino ve Presto gibi çeşitli sorgu motorlarını destekleyerek mevcut veri iş akışlarıyla sorunsuz entegrasyon sağlar.
Topluluk
Apache Iceberg’in, Twitter ve Github gibi çeşitli iş birliği platformlarında etkin bir topluluğu ve çevrimiçi varlığı vardır. En güncel geliştirme sohbetlerine katılmak isteyenler için özel bir Slack çalışma alanı da bulunur.
Açık kaynak katkıcıları ve Iceberg geliştiricileri, sosyal platformlar üzerinden öğrenme topluluğuna erişilebilir durumdadır. Bu sayede, Iceberg özelliklerini uygularken sorunlarla karşılaştığınızda çözüm bulmanız kolaylaşır.
Apache Iceberg’in Temel Kavramları
Apache Iceberg, verimli veri yönetimi ve sorgulamayı mümkün kılan bir dizi temel kavram sunar. Bu bölümde bunları gözden geçireceğiz.
Meta veri yönetimi
Iceberg, meta veri, manifesto listeleri ve manifesto dosyalarını JSON formatında tutan meta veri katmanı aracılığıyla tablo şemalarını, bölümleri, dosya konumlarını ve daha fazlasını yönetir.
- Meta veri dosyası: tablonun şemasını ve bölümlerini takip eder.
- Manifesto dosyaları: bir veri dosyasının konumu, boyutu, bölümü ve satır ile sütun istatistikleri gibi dosya düzeyinde bilgileri içerir.
Iceberg, anlık görüntü meta verileri aracılığıyla sürümlendirmeyi destekler. Anlık görüntünün zaman damgası, bölümü ve ilgili veri dosyalarına ilişkin ayrıntıları depolar. Anlık görüntü, belirli bir andaki tüm verilerinizin görüntüsüdür.
Şema evrimi
Şema evrimi, yeni veri öğelerini karşılamak veya değişen ihtiyaçlara uyum sağlamak amacıyla bir tablo şemasını değiştirme sürecidir. Apache Iceberg yerel şema evrimini destekler; böylece maliyetli veri yeniden yazımları veya taşımalar olmadan şema güncellemeleri yapılabilir.
Örneğin, çalışan verilerini tutuyor ve performans metrikleri için yeni bir sütun eklemek istiyorsanız, “employee_performance” adlı bir sütun ekleyebilirsiniz. Iceberg, mevcut verileri etkilemeden bu sütunu içerecek şekilde meta verilerini günceller. Yeni sütun başlangıçta varsayılan değerlere sahip olur ve yeni kayıtlar eklendikçe güncellenir.
Bölümleme (partitioning)
Bölümleme, veriyi daha küçük alt kümelere ayırarak tüm veri kümesini okumak yerine bir sorgu için yalnızca gerekli verilere erişmenizi sağlar.
Iceberg birçok bölümleme stratejisini destekler, örneğin:
- Aralık bölümleme: bölüm sütunundaki değer aralıklarına göre veriyi böler; belirli tarihler, sayısal değerler veya metin girdileri gibi.
- Özet (hash) bölümleme: veriyi bölmek için bölüm anahtarına bir özet fonksiyonu uygular.
- Truncate bölümleme: bir bölüm sütununun değerlerini kısaltıp veriyi gruplar. Örneğin 533405, 533404, 533689, 533098, 535209 ve 535678 posta kodlarını 3 haneye kısaltmak veriyi ‘533’ ve ‘535’ olarak gruplar.
- Liste bölümleme: bölüm anahtarı değerlerini bir listedeki değerlerle eşleştirir ve veriyi buna göre böler. Bu, bölüm sütunundaki kategorik değerler için uygundur. Örneğin dizüstü bilgisayar şirketlerini “Lenovo”, "Apple” ve “HP” gibi gruplara ayırmak.
Anlık görüntüler (snapshots)
Anlık görüntü, belirli bir andaki geçerli manifesto dosyaları kümesidir. Veride yaptığınız her değişiklik, güncellenmiş manifesto dosyaları ve meta verilerle yeni bir anlık görüntü oluşturur.
Iceberg anlık görüntü tabanlı sorgulamayı takip eder; yani belirli bir zaman damgasına erişerek o andaki tüm veri dosyaları kümesine ulaşabilirsiniz. Bu sayede geçmiş verilere erişebilir ve veri kaybı durumunda önceki sürümlere geri dönebilirsiniz.
Apache Iceberg’in Teknik Mimarisi
Apache Iceberg verileri tablolarda depolamaz. Bunun yerine, veri dosyalarını tek bir tablo olarak gösterecek şekilde düzenler.
Bunu mümkün kılan mimariyi inceleyelim.

Görsel kaynağı
Iceberg kataloğu
Katalog katmanı, tablonun güncel meta veri dosyasına bir başvuru veya işaretçi içerir. Ne zaman veri değişse yeni bir meta veri dosyası yazılır ve işaretçi günlükteki en son meta veri dosyasını gösterir.
Bu katman, Iceberg tablolarında ACID uyumluluğunu kolaylaştırır. Örneğin, devam eden değişiklikler tamamlanıp tabloya işlenene kadar diğer işlemler tarafından görülmez. O zamana kadar işaretçi mevcut meta veri dosyasını gösterir.
Genel olarak kataloglar, belirli meta veri dosyası sürümlerine işaret ederek Iceberg tablolarında ACID uyumluluğunun yönetimini basitleştirir.
Meta veri katmanı
Bu katman üç tür dosya içerir:
- Meta veri dosyaları: tablonun şemasını, konumunu, bölüm bilgilerini, anlık görüntü zaman damgalarını ve diğer bilgileri depolar.
- Manifesto dosyaları: dosya düzeyinde meta verileri takip eder. Her veri dosyası için bölüm bilgisi, satır/sütun sayısı gibi istatistikler, anlık görüntü ayrıntıları ve dosya formatını saklar.
- Manifesto listeleri: tek bir anlık görüntüyü oluşturan manifesto dosyaları grubudur.
Bu katman, tablonun yapısını ve bütünlüğünü koruyarak verimli veri sorgulama ve yönetimi sağlar.
Veri katmanı
Veri katmanı, Iceberg mimarisinin gerçek verilerin bulunduğu depolama bileşenidir.
Iceberg, Parquet, ORC ve Avro dahil çeşitli veri formatlarını destekler. Bu esneklik, farklı veri türleri ve kullanım senaryolarına yönelik optimize depolama ve verimli veri işlemeyi mümkün kılar.
Apache Iceberg Entegrasyon ve Uyumluluk
Apache Iceberg, birçok popüler büyük veri işleme çerçevesi ve hesaplama motoru ile entegre olur.
Veri işleme motorlarıyla entegrasyonlar
Apache Spark
Iceberg tabloları, üzerinde Spark API’lerini kullanarak veri okuyup yazabileceğiniz büyük veri depolama sistemleri gibi çalışır. Dataframe API’sine ek olarak, Iceberg tablolarını sorgulamak için Spark SQL modülünü de kullanabilirsiniz.
Apache Spark’ın iki kataloğu vardır: org.apache.iceberg.spark.SparkCatalog ve org.apache.iceberg.spark.SparkSessionCatalog. Bu kataloglar, Spark’ın mevcut Iceberg tablolarının meta verilerini keşfetmesine ve erişmesine yardımcı olur.
metadataorg.apache.iceberg.spark.SparkCatalog: Hive veya Hadoop gibi harici katalog hizmetlerini kullanmak için.org.apache.iceberg.spark.SparkSessionCatalog: Spark’ın yerleşik kataloğu aynı oturumda hem Iceberg hem Iceberg olmayan tabloları yönetebilir.
Apache Flink
Apache Flink ile Iceberg entegrasyonu, akış veri işlemede bilinir. Bu entegrasyon, çeşitli kaynaklardan verileri doğrudan Iceberg tablolarına akıtmanıza ve gerçek zamanlı akış verileri üzerinde analizi kolayca gerçekleştirmenize olanak tanır.
Presto ve Trino
Preso ve Trino, Hive veya diğer SQL motorlarına kıyasla hızlı veri işleme yetenekleriyle bilinir. Bu nedenle, sorgulanıp analiz edilmesi gereken çok büyük verileriniz varsa, Iceberg ile Presto/Trino entegrasyonu harika bir seçimdir.
Trino’nun yerleşik bir kataloğu yoktur. Iceberg tablolarına işaret etmek için Hive Metastore veya AWS Glue gibi harici katalog hizmetlerine dayanır.
Veri gölü uyumluluğu
Geleneksel veri gölleri ACID özelliklerini desteklemez; bu da eksik veri okumalarına veya eşzamanlı yazmalara yol açabilir. Ancak bir veri gölünü Iceberg ile entegre etmek veri tutarlılığı ve doğruluğunu sağlar.
- Amazon S3: Amazon S3, çeşitli dosya formatlarını destekleyen popüler bir bulut depolama hizmetidir. Veri gölü mimarisinde depolama katmanı olarak kullanılır. Iceberg’i S3 ile kullanmak için katalog hizmeti olarak AWS Glue kullanırsınız. Katalog yapılandırıldıktan sonra tabloları analiz etmek için herhangi bir sorgu dilini kullanabilirsiniz.
- Google Cloud Storage: Google Cloud üzerindeki bir veri gölü daha ölçeklenebilir ve esnek bir veri mimarisi sunar. Veri altyapısını Google Cloud etrafında kurmuş birçok şirket, Iceberg tablo formatından yararlanabilir. Iceberg tabloları Google’ın BigQuery’si veya standart sorgu dilleri kullanılarak sorgulanabilir.
- Azure Blob Storage: Bu, bulutta büyük miktarda yapılandırılmamış veriyi depolamaya optimize edilmiş Microsoft’un depolama sistemidir. Iceberg, Azure ile entegre olur ve hızlı, güvenilir veri erişimi sağlar.
Apache Iceberg ve Delta Lake Karşılaştırması
Apache Iceberg ve Delta Lake, veri göllerine ACID özellikleri kazandırmak üzere tasarlanmış gelişmiş tablo formatlarıdır; ancak özellikler, entegrasyonlar ve kullanım senaryoları açısından farklılık gösterirler.
İşte ikisine dair ayrıntılı bir karşılaştırma:
Delta Lake genel bakış
Delta Lake, Parquet dosyalarından oluşan bir koleksiyona ACID özellikleri sağlayarak okuyucuların hiçbir zaman tutarsız veri görmemesini temin eden bir tablo formatıdır.
Databricks tarafından, yani Apache Spark’ın arkasındaki şirket tarafından geliştirilen Delta Lake, büyük veri işleme ve analitik için Spark ile yüksek uyumluluğa sahiptir.
Delta Lake, zaman yolculuğu özelliklerini yönetmek için işlem günlükleri kullanır. İşlem günlüğü, tabloda yapılan değişiklikleri izleyen JSON dosyalarından oluşan bir listedir. Her ekleme, silme veya güncelleme, özel değişiklikleri izleyen yeni bir günlük dosyasına yol açar.
Delta Lake, belirli zaman noktalarında tüm tablonun anlık görüntülerini temsil eden ve Parquet formatında saklanan denetim noktası (checkpoint) dosyalarını periyodik olarak oluşturur.
Apache Iceberg ve Delta Lake özellik karşılaştırması
|
Özellik |
Apache Iceberg |
Delta Lake |
|
Tanım |
Iceberg tablo formatı, birden çok işleme motorunu destekleyen ölçeklenebilir bir altyapı sağlar. |
Delta Lake, özellikle Databricks ekosistemi için uygun, güvenilir bir depolama katmanıdır. |
|
Dosya formatı |
Iceberg, Parquet, Avro ve ORC dahil çeşitli dosya formatlarını destekler. |
Delta Lake yerel olarak yalnızca Parquet dosya formatını destekler. |
|
ACID desteği |
Iceberg, ACID işlemlerini destekler. |
Delta Lake, güçlü ACID özellikleri sunar. |
|
Bölümleme yönetimi |
Iceberg dinamik bölümlemeyi destekler; yani bölümler şemayı yeniden yazmadan güncellenebilir. |
Bölümler sabittir ve tablolar oluşturulurken tanımlanmalıdır. Tanımlı bölümlerin değiştirilmesi veri yeniden yazımlarını gerektirebilir. |
|
Zaman yolculuğu |
Tabloda yapılan her değişiklik yeni bir anlık görüntü oluşturur. |
Değişikliklerin JSON dosyalarında izlendiği işlem günlükleri aracılığıyla zaman yolculuğu sunar. |
|
Entegrasyonlar |
Iceberg; SQL, Spark, Trino, Hive, Flink, Presto ve daha fazlası gibi birden fazla veri işleme motorunu destekler. |
Delta Lake, Apache Spark ile sıkı şekilde bağlıdır. |
Apache Iceberg ve Delta Lake kullanım senaryoları
|
Kullanım durumu |
Apache Iceberg |
Delta Lake |
|
Motor esnekliği |
Apache Spark, Flink, Presto, Hive vb. birden çok motor kullanıldığında en iyisidir. Farklı işlem görevleri için farklı motorlara ihtiyaç duyan ortamlar için idealdir. |
Apache Spark’ı yerel olarak kullananlar için en iyisidir; Spark ekosisteminde sıkı entegrasyon ve optimal performans sunar. |
|
Veri akışı |
Çeşitli kaynaklardan sürekli veri alımını destekler ve veriyi gerçek zamanlı işler. |
Toplu ve akış işlemesini birleştirir; tek bir boru hattında her ikisine de ihtiyaç duyulan kullanım durumları için idealdir. |
Apache Iceberg ve Delta Lake ek hususlar
- Topluluk ve ekosistem: Hem Iceberg hem Delta Lake etkin topluluklara ve kapsamlı dokümantasyona sahiptir. Ancak Delta Lake, Databricks desteğinden yararlanarak Databricks ekosistemi içinde güçlü bir destek sunar.
- Performans: Her iki format da performans iyileştirmeleri sunsa da, Delta Lake’in Spark ile sıkı entegrasyonu Spark merkezli iş akışlarına fayda sağlayabilir. Iceberg’in farklı motorlarla esnekliği, çok motorlu ortamlarda performans kazanımları sağlayabilir.
Genel olarak, Delta Lake gerçek zamanlı işleme ve Spark ile Databricks ekosistemiyle sıkı entegrasyon gerektiren kullanım durumları için uygundur. Öte yandan, Apache Iceberg geniş ölçekli veri işleme için daha fazla esneklik ve belirli kullanım durumları için en iyi motoru seçme olanağı sunar.
Apache Iceberg ile Başlarken
Apache Iceberg’in kurulumu ve kullanımı, ortamınızı yapılandırmayı ve temel ile ileri düzey işlemleri anlamayı içerir. Bu rehber, onunla başlamanıza yardımcı olacaktır.
Kurulum ve yapılandırma
Iceberg tablolarını kurup çalıştırmak için makinenizde aşağıdaki ortamların yapılandırılmış olması gerekir:
- Java JDK
- PySpark
- Python
- Apache Spark
Bu araç ve teknolojiler hakkında temel bir anlayışa sahip olmak da faydalıdır. Aşağıdaki kurslarla öğrenebilirsiniz:
- PySpark ile Büyük Veri
- PySpark’a Giriş
- Python ile Spark SQL’e Giriş
- PySpark ile Büyük Veri Temelleri
- Python Programlama
Hazır olduğunuzda Iceberg tablolarını kurmak için aşağıdaki adımları izleyebilirsiniz:
- Iceberg JAR dosyalarını indirin ve makinenizde bir klasöre yerleştirin.
- Iceberg tablolarınızı depolamak için
iceberg-warehouseadlı yeni bir klasör oluşturun.
mkdir iceberg-warehouse
- JAR dosyalarını aşağıda gösterildiği gibi bir Spark oturumunda yapılandırın.
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Iceberg-sample") \
.config("spark.jars", "jars/iceberg-spark-runtime-<version>.jar") \
.getOrCreate()
“jars/iceberg-spark-runtime-<version>.jar” kısmını JAR dosyalarının gerçek dizini ve kullandığınız sürümle değiştirin.
- PySpark’ı Iceberg tablolarını kullanacak şekilde yapılandırın.
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Iceberg-Sample") \
.config("spark.jars", "jars/iceberg-spark-runtime-<version>.jar") \
.config("spark.sql.catalog.catalog_name", "org.apache.iceberg.spark.SparkCatalog") \
.config("spark.sql.catalog.catalog_name.type", "hadoop") \
.config("spark.sql.catalog.catalog_name.warehouse", "file:///C:/HP/iceberg-warehouse") \
.getOrCreate()
"jars/iceberg-spark-runtime-<version>.jar" yolunu ve sürümünü Iceberg JAR dosyalarının gerçek yolu ve sürümüyle değiştirin ve depo (warehouse) yolunun doğru olduğundan emin olun.
Artık PySpark kullanarak Iceberg tabloları oluşturabilir ve kullanabilirsiniz.
Temel işlemler
- Bir Iceberg tablosu oluşturun ve içine veri ekleyin.
spark.sql(""" CREATE TABLE my_catalog.emp_table ( id INT, data STRING ) USING iceberg """)
spark.sql(""" INSERT INTO catalog_name.emp_table VALUES (14, 'james'),('15','john')""")
- Iceberg tablolarından veri silme komutu.
spark.sql("DELETE FROM catalog_name.emp_table WHERE id = 14")
İleri düzey işlemler
Mevcut verileri etkilemeden sütun eklemek, güncellemek veya kaldırmak şema evriminin bir parçasıdır.
- Yeni bir sütunu şu şekilde ekleyebilirsiniz.
spark.sql("ALTER TABLE ADD catalog_name.emp_table COLUMN salary INT")
Bölüm evrimi, mevcut veri dosyalarını yeniden yazmadan bölüm sütunlarını değiştirmek anlamına gelir.
- Yeni bir bölüm sütununu şu şekilde ekleyebilirsiniz.
spark.sql("ALTER TABLE catalog_name.emp_table ADD PARTITION FIELD emp_join_date")
Bu adımlar ve komutlar, Apache Iceberg ile başlamanız için temel bir çerçeve sunar ve bu formatla çalışmanın nasıl göründüğüne dair bir fikir verir.
Sonuç
Bugün pek çok konuya değindik; gelin bazı kilit noktalarla özetleyelim.
Apache Iceberg, bir dizi veri dosyasına sağlam bir tablo yapısı kazandırarak ACID işlemleri için destek sağlar ve veri tutarlılığı ile güvenilirliğini temin eder.
Iceberg formatı, depolama sistemlerine dinamik şema evrimi, sorunsuz bölümleme ve ölçeklenebilirlik getirir. Apache Spark ve Flink gibi veri işleme motorlarıyla entegrasyonu, hem toplu hem gerçek zamanlı akış verilerini verimli şekilde ele almayı mümkün kılar.
Modern veri mimarisi ve yönetimine daha derinlemesine dalmak istiyorsanız, şu ek kaynakları incelemeyi düşünebilirsiniz:
SSS
Apache Iceberg karmaşık iç içe geçmiş veri yapılarıyla başa çıkabilir mi?
Evet, Apache Iceberg karmaşık iç içe geçmiş veri yapılarıyla başa çıkabilir. Struct, map ve dizi (array) gibi iç içe veri türlerini destekler; bu da onu geniş bir veri senaryosu yelpazesi için uygun kılar.
Apache Iceberg, eşzamanlı yazmalar sırasında veri tutarlılığını nasıl sağlar?
Apache Iceberg, iyimser eşzamanlılık denetimi kullanarak eşzamanlı yazmalar sırasında veri tutarlılığını sağlar. Sürümlemeli bir meta veri katmanıyla değişiklikleri izler ve her yazma işlemi yeni bir anlık görüntü oluşturur. Eşzamanlı yazmalar meydana geldiğinde Iceberg çakışmaları denetler ve yalnızca bir yazmanın başarılı olmasını sağlayarak veri bütünlüğünü korur.
Apache Iceberg kullanmanın geleneksel veri göllerine kıyasla performans etkileri nelerdir?
Apache Iceberg, veri yerleşimini optimize ederek, dinamik bölümlemeyi destekleyerek ve ince taneli meta veri yönetimine izin vererek geleneksel veri göllerine kıyasla performansı önemli ölçüde artırabilir. Bu özellikler, sorgular sırasında taranan veri miktarını azaltır ve genel sorgu performansını iyileştirir.
Apache Iceberg, Hadoop dışı bulut depolama çözümleriyle kullanılabilir mi?
Evet, Apache Iceberg, Amazon S3, Google Cloud Storage ve Azure Blob Storage dahil çeşitli bulut depolama çözümleriyle kullanılabilir. Birden fazla platformda Iceberg’in yeteneklerinden yararlanmanıza imkân tanıyacak şekilde depolamadan bağımsız olacak biçimde tasarlanmıştır.
Apache Iceberg, kesinti gerektirmeden şema değişikliklerini nasıl yönetir?
Apache Iceberg, yerel şema evrimi özelliğiyle şema değişikliklerini ele alır. Kesinti veya mevcut verileri yeniden yazma gerektirmeden sütun eklemenize, kaldırmanıza veya güncellemenize olanak tanır. Bu değişiklikler meta verilere uygulanır ve yeni veriler güncellenmiş şemaya göre yazılır.
Iceberg tablolarını yönetmek ve sorgulamak için mevcut bir kullanıcı arayüzü var mı?
Apache Iceberg’in yerleşik bir kullanıcı arayüzü yoktur; ancak kullanıcı arayüzü sunan çeşitli veri platformları ve sorgu motorlarıyla entegre edilebilir. Apache Spark, Trino ve Presto gibi araçlar, kendi arayüzleri üzerinden Iceberg tablolarıyla etkileşim kurmak için kullanılabilir.
Apache Iceberg, Apache Hudi gibi diğer tablo formatlarıyla nasıl karşılaştırılır?
Apache Iceberg ve Apache Hudi, her ikisi de ACID işlemleri ve zaman yolculuğu yetenekleri sağlasa da farklı tasarım felsefelerine ve kullanım durumlarına sahiptir. Iceberg, birden çok motoru destekleyen yüksek performanslı bir tablo formatı sunmaya odaklanırken Hudi, gerçek zamanlı veri alımı ve artımlı işlemeye vurgu yapar. Aralarındaki tercih, özel kullanım durumlarına ve entegrasyon ihtiyaçlarına bağlıdır.
Apache Iceberg, makine öğrenimi iş akışlarında kullanılabilir mi?
Evet, Apache Iceberg makine öğrenimi iş akışlarında kullanılabilir. Büyük veri kümelerini verimli şekilde yönetebilmesi ve (Parquet ve Avro gibi) birden fazla dosya formatını desteklemesi, onu makine öğrenimi modelleri için veri hazırlama ve işleme açısından uygun kılar. Apache Spark gibi büyük veri işleme çerçeveleriyle entegrasyon, ML iş akışlarındaki kullanımını daha da güçlendirir.
Apache Iceberg, veri güvenliği ve erişim kontrolünü nasıl ele alır?
Apache Iceberg, veri güvenliği ve erişim kontrolü için alttaki depolama ve işleme motorlarına dayanır. Şifreleme, IAM ilkeleri ve erişim denetimleri gibi güvenlik önlemlerini depolama katmanında (ör. Amazon S3, Google Cloud Storage) ve işleme katmanında (ör. Apache Spark, Flink) uygulayabilirsiniz. Ayrıca AWS Glue ve Hive Metastore gibi katalog hizmetleri izinleri ve erişim kontrollerini yönetmek için kullanılabilir.
Srujana, Bilgisayar Bilimleri alanında dört yıllık dereceye sahip serbest çalışan bir teknoloji yazarıdır. Veri bilimi, bulut bilişim, geliştirme, programlama, güvenlik ve daha birçok konuyu yazmak onun için doğal bir süreçtir. Klasik edebiyata ve yeni yerler keşfetmeye tutkuyla bağlıdır.
