{"id":6127,"date":"2021-05-26T17:20:36","date_gmt":"2021-05-26T17:20:36","guid":{"rendered":"https:\/\/bentego.com\/apache-iceberg\/"},"modified":"2025-10-20T16:09:30","modified_gmt":"2025-10-20T16:09:30","slug":"apache-iceberg","status":"publish","type":"post","link":"https:\/\/bentego.com\/tr\/apache-iceberg\/","title":{"rendered":"Apache Iceberg"},"content":{"rendered":"\n<p>Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz. 2017 y\u0131l\u0131nda Netflix taraf\u0131ndan ortaya \u00e7\u0131kar\u0131lan proje daha sonra a\u00e7\u0131k kaynakl\u0131 olarak Apache Software Foundation taraf\u0131ndan geli\u015ftirilmi\u015ftir.<\/p>\n\n\n\n<p>Iceberg, as\u0131l olarak bulut tabanl\u0131 depolama sistemlerinde kullan\u0131lmak amac\u0131yla tasarlanm\u0131\u015ft\u0131r. Hive\u2019\u0131n Amazon Depolama Servisinde (Amazon S3) kullan\u0131m\u0131nda kar\u015f\u0131la\u015f\u0131lan veri tutarl\u0131l\u0131\u011f\u0131 ve performans sorunlar\u0131n\u0131n \u00e7\u00f6z\u00fcm\u00fc i\u00e7in geli\u015ftirilmi\u015ftir. Hive tablo verilerinin kayd\u0131n\u0131 klas\u00f6r seviyesinde (folder level) tuttu\u011fu i\u00e7in verilerde yap\u0131lacak i\u015flemlerde dosya listeleme i\u015flemleri ger\u00e7ekle\u015ftirmek zorundad\u0131r. Listeleme i\u015flemlerinin artmas\u0131 bulut sistemlerinde performans\u0131 etkiledi\u011fi i\u00e7in istenmeyen bir durumdur. Ayn\u0131 zamanda bulut depolama sistemlerinde \u00e7ok fazla listeleme i\u015flemi yap\u0131ld\u0131\u011f\u0131nda baz\u0131 verilerin ka\u00e7\u0131r\u0131labilece\u011fi s\u00f6ylenmektedir. Iceberg ise bir tablonun t\u00fcm dosyalar\u0131n\u0131 bir a\u011fa\u00e7 yap\u0131s\u0131nda (tree structre) takip ederek bir di\u011fer deyi\u015fle verilerin takibini dosya seviyesinde (file level) yaparak bu sorunlar\u0131n \u00f6n\u00fcne ge\u00e7mi\u015ftir.<\/p>\n\n\n\n<p>Tabloda yap\u0131lan bir de\u011fi\u015fiklik t\u00fcm dosyalar\u0131n yollar\u0131n\u0131 (file paths) i\u00e7eren yeni bir metadata dosyas\u0131n\u0131 olu\u015fturur. Bir di\u011fer avantaj\u0131, maliyetli dosya listeleme i\u015flemlerinin azalt\u0131lmas\u0131 sonucu sorgular\u0131n daha h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131r hale gelmesidir.<\/p>\n\n\n\n<p><strong>Iceberg Tablo Yap\u0131s\u0131<\/strong><\/p>\n\n\n\n<p><p>Iceberg, her bir write ve commit i\u015flemi i\u00e7in bir snapshot (anl\u0131k g\u00f6r\u00fcnt\u00fc) tutmaktad\u0131r. Snapshotlar\u0131 anl\u0131k bir zamandaki tablo durumu olarak d\u00fc\u015f\u00fcnebiliriz. Her snapshot, o anki tablonun i\u00e7eri\u011fini olu\u015fturan t\u00fcm veri dosyalar\u0131n\u0131 listeler. Her bir write i\u015fleminden sonra a\u015fa\u011f\u0131daki \u015fekildeki yeni bir snapshot olu\u015fmaktad\u0131r. Okuyucular (readers) o anki write i\u015flemlerinden etkilenmezler. A\u015fa\u011f\u0131daki \u015fekilde S2 an\u0131nda bir tablo okundu\u011fu anda write i\u015flemi ba\u015flam\u0131\u015f ve S3 snapshotu olu\u015fturulmu\u015ftur. Okuyucu S2\u2019yi okurken izole bir \u015fekilde write i\u015flemi yap\u0131lm\u0131\u015f ve yeni S3 snapshotu olu\u015fturulmu\u015ftur. B\u00f6ylelikle tablolarda olas\u0131 bir kilitlenmenin (lock) \u00f6n\u00fcne ge\u00e7ilir.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4498 aligncenter\" src=\"https:\/\/bentego.com\/wp-content\/uploads\/2021\/05\/Picture2-1.png\" alt=\"\" width=\"334\" height=\"104\"><\/p><\/p>\n\n\n\n\n\n<p class=\"has-text-align-center has-text-align-center\"><em>\u015eekil 1: Iceberg snapshots<\/em><\/p>\n\n\n\n<p>Snapshotlar\u0131n detayl\u0131 yap\u0131s\u0131n\u0131 \u015eekil 2\u2019deki gibi inceleyebiliriz. Tree structure kulland\u0131\u011f\u0131ndan bahsetmi\u015ftik. Her bir nodun hangi verileri tuttu\u011funu k\u0131saca \u00f6zetleyebiliriz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Snapshot<\/strong>: T\u00fcm veri dosyalar\u0131 dahil olmak \u00fczere, anl\u0131k tablonun durumu.<\/li>\n\n\n\n<li><strong>Manifest list<\/strong>: Manifest dosyalar\u0131n\u0131 listeleyen bir dosya, her snapshot i\u00e7in bir adet olu\u015fur.<\/li>\n\n\n\n<li><strong>Manifest<\/strong>: Dosyalara ula\u015f\u0131rken b\u00f6l\u00fcmlendirilmi\u015f alanlar\u0131n bilgisi tutulur. Partititon olarak d\u00fc\u015f\u00fcnebiliriz.<\/li>\n\n\n\n<li><strong>Data file<\/strong>: Bir tablonun sat\u0131rlar\u0131n\u0131 i\u00e7eren veri dosyas\u0131.<\/li>\n<\/ul>\n\n\n\n\n\n<p class=\"has-text-align-center\"><p><img fetchpriority=\"high\" decoding=\"async\" class=\"size-full wp-image-4500 aligncenter\" src=\"https:\/\/bentego.com\/wp-content\/uploads\/2021\/05\/Picture3.png\" alt=\"\" width=\"344\" height=\"262\"><\/p>\n<p class=\"has-text-align-center\" style=\"text-align: center;\"><em>\u015eekil 2: Iceberg tablo format\u0131<\/em><\/p><\/p>\n\n\n\n<p>Iceberg parquet, avro, orc dosya t\u00fcrlerini desteklemektedir. \u015eemada de\u011fi\u015fikli\u011fi yap\u0131l\u0131rken sadece meta veriler etkilendi\u011fi i\u00e7in dosyalar\u0131n tekrardan yaz\u0131lmas\u0131na gerek yoktur. Iceberg \u015fema g\u00fcncellemelerinde a\u015fa\u011f\u0131daki de\u011fi\u015fiklikleri yapabilmektedir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Add<\/strong>: Tabloya yeni bir s\u00fctun eklenmesi<\/li>\n\n\n\n<li><strong>Drop:<\/strong> Mevcut bir s\u00fctunun tablodan kald\u0131r\u0131lmas\u0131<\/li>\n\n\n\n<li><strong>Rename<\/strong>: S\u00fctunlar\u0131n yeniden adland\u0131r\u0131lmas\u0131<\/li>\n\n\n\n<li><strong>Update<\/strong>: S\u00fctunlar\u0131n veri tiplerinin g\u00fcncellenmesi<\/li>\n<\/ul>\n\n\n\n<p><strong>Partition Yap\u0131s\u0131<\/strong><\/p>\n\n\n\n<p>Iceberg hidden partition yap\u0131s\u0131n\u0131 kullanmaktad\u0131r. Yani partition yap\u0131s\u0131 kurulurken tablodaki s\u00fctunlar ili\u015fkilendirilir. Partition i\u00e7in tabloda yeni bir alan yarat\u0131lmaz. Bu yap\u0131 sayesinde kullan\u0131c\u0131lar\u0131n partition yap\u0131s\u0131n\u0131 bilmelerine gerek yoktur. Tablo yarat\u0131l\u0131rken belirlenen \u201cpartition spec\u201d inin sorgulama s\u0131ras\u0131nda belirtilmesine gerek yoktur, \u00e7\u00fcnk\u00fc bunu Iceberg kendi sorgu plan\u0131nda ger\u00e7ekle\u015ftirir. Bu sayede sorgular\u0131n h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar ve sorgulardaki kullan\u0131c\u0131 hatalar\u0131 minimuma indirilir.<\/p>\n\n\n\n<p><p>Yeni bir partition yarat\u0131ld\u0131\u011f\u0131 zaman eski datalar eski partitionlarda kal\u0131rken yeni partiitonlara sadece yeni veriler yaz\u0131l\u0131r. Ayr\u0131ca yeni partition yarat\u0131l\u0131rken tablonun yeniden olu\u015fturulmas\u0131 gerekmez, dinamik bir yap\u0131 mevcuttur.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4502 aligncenter\" src=\"https:\/\/bentego.com\/wp-content\/uploads\/2021\/05\/Picture4.png\" alt=\"\" width=\"842\" height=\"750\"><\/p><\/p>\n\n\n\n\n\n<p class=\"has-text-align-center has-text-align-center\"><em>\u015eekil 3: Partition de\u011fi\u015fimini g\u00f6steren bir \u00f6rnek<\/em><\/p>\n\n\n\n<p>Yukar\u0131daki \u015fekilde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi ba\u015flang\u0131\u00e7ta ay (month) olarak belirlenen partition yap\u0131s\u0131, 2009-01-01 tarihinden itibaren g\u00fcn (day) olarak de\u011fi\u015ftiirlmi\u015ftir. Peki Iceberg sorgu yaz\u0131ld\u0131\u011f\u0131nda nas\u0131l davranacak? \u00d6rnekteki sorgu \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda Iceberg 2 ayr\u0131 sorgu plan\u0131 olu\u015fturur. Sorgudaki filtre hem eski partiiton\u2019\u0131 hem de yeni partition\u2019\u0131 kapsad\u0131\u011f\u0131 i\u00e7in yukar\u0131daki ye\u015fil alanlar sorgu plan\u0131na dahil edilecektir.<\/p>\n\n\n\n<p><strong>Iceberg Java API<\/strong><\/p>\n\n\n\n<p>Iceberg\u2019\u0131n Java ve Python API\u2019lar\u0131 mevcut olup, kurulumu ve kullan\u0131mlar\u0131 kolayd\u0131r. Bu yaz\u0131da Java API \u00fczerinden \u00f6rnekler g\u00f6sterece\u011fim. Iceberg tablosu yaratmak i\u00e7in a\u015fa\u011f\u0131daki kodu kullanabiliriz. \u015eema ve&nbsp; partition bilgileri elimde olan \u201ccustomer_db\u201d &nbsp;tablosuna g\u00f6re olu\u015fturuldu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>   Schema schema = new Schema(\n            optional(1, \"customerId\", Types.LongType.get()),\n            optional(2, \"customerFName\", Types.StringType.get()),\n            optional(3, \"customerLName\", Types.StringType.get()),\n            optional(4, \"customerEmail\", Types.StringType.get()),\n            optional(5, \"customerPassword\", Types.StringType.get()),\n            optional(6, \"customerStreet\", Types.StringType.get()),\n            optional(7, \"customerCity\", Types.StringType.get()),\n            optional(8, \"customerState\", Types.StringType.get()),\n            optional(9, \"customerZipcode\", Types.LongType.get())\n    );\n    PartitionSpec spec = PartitionSpec.builderFor(schema)\n            .identity(\"customerCity\")\n            .build();\n\n    TableIdentifier id = TableIdentifier.parse(\"retail_db.customers\");<\/em><\/code><\/pre>\n\n\n\n<p>Daha sonra tabloyu yaratmak i\u00e7in HDFS\u2019de depolanan tablolar\u0131 destekleyen HadoopCatalog ile tablomuzu yarat\u0131yoruz.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>Configuration conf = new Configuration();\nString warehousePath = \"hdfs:\/\/localhost:9000\/user\/mehmet\/test\";\n\nHadoopCatalog catalog = new HadoopCatalog(conf, warehousePath);\nTable table = catalog.createTable(id, schema, spec);<\/em><\/pre>\n\n\n\n<p>Tablomuza verileri spark kullanarak insert edebiliriz. Bunun i\u00e7in ilk \u00f6nce verileri spark dataframe ile okuyup daha sonra da Iceberg tablosuna ekliyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/customers tablosundaki verileri okumak i\u00e7in\nDataset df;\ndf = spark.read().option(\"header\", true).option(\"inferSchema\", true)\n.csv(\"\/home\/train\/datasets\/retail_db\/customers.csv\");\n\n\n\/\/Dataframe\u2019i belirledi\u011fimiz partition spec\u2019ine g\u00f6re ilk \u00f6nce sort edip sonra append ediyoruz\n    df.sortWithinPartitions(\"customerState\").write()\n            .format(\"iceberg\").option(\"write-format\", \"avro\")\n            .mode(\"append\").save(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers\");<\/em><\/pre>\n\n\n\n<p>Tablodan verileri okumak i\u00e7in:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> <em>Dataset&lt;Row&gt; df;\n df = spark.read().format(\"iceberg\").load(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers\");<\/em><\/code><\/pre>\n\n\n\n<p>Snapshot ve dosyalar\u0131n bilgilerini g\u00f6rmek i\u00e7in:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/snapshots\nDataset df;\ndf = spark.read().format(\"iceberg\").load(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers#snapshots\");\n\n\/\/Files\nDataset df;\ndf = spark.read().format(\"iceberg\").load(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers#files\");<\/em><\/pre>\n\n\n\n<p>Mevcut partition\u2019\u0131n g\u00fcncellenmesi:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>Configuration conf = new Configuration();\nString warehousePath = \"hdfs:\/\/localhost:9000\/user\/mehmet\/test\";\nHadoopCatalog catalog = new HadoopCatalog(conf, warehousePath);\n\nTableIdentifier id = TableIdentifier.parse(\"retail_db.customers\");\nTable table = catalog.loadTable(id);\ntable.updateSpec().addField(\"customerState\").removeField(\"customerCity\").commit();<\/em><\/pre>\n\n\n\n<p><strong>Zamanda Yolculuk (Time Travel)<\/strong><\/p>\n\n\n\n<p>Iceberg her write i\u015fleminde yeni bir snapshot olu\u015fturdu\u011fu i\u00e7in yap\u0131lan t\u00fcm de\u011fi\u015fiklikler istenilen snapshotlara gidilerek g\u00f6zlenebilir. Snapshot verilerine eri\u015fmek i\u00e7in:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/snapshots\nDataset df;\ndf = spark.read()\n          .format(\"iceberg\")\n          .load(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers#snapshots\");\nSystem.out.println(\"Snapshots\");\ndf.show(false);<\/em><\/pre>\n\n\n\n<p><p>Size \u015fu sonu\u00e7lar\u0131 verecektir:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4503 aligncenter\" src=\"https:\/\/bentego.com\/wp-content\/uploads\/2021\/05\/Picture5-1.png\" alt=\"\" width=\"606\" height=\"120\"><\/p><\/p>\n\n\n\n\n\n<p class=\"has-text-align-center has-text-align-center\"><em>\u015eekil 4: Snapshot listesi.<\/em><\/p>\n\n\n\n<p>Belirli bir snapshota gitmek i\u00e7in snapshot-id \u2018yi kullanabiliriz:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>Dataset df;\ndf = spark.read()\n          .format(\"iceberg\")\n          .option(\"snapshot-id\", \u201c6335699880622112640\u201d) #Snapshot id\u2019si\n          .load(\"hdfs:\/\/localhost:9000\/user\/mehmet\/test\/retail_db\/customers\");<\/em><\/pre>\n\n\n\n<p>Tabloyu \u00f6nceki bir s\u00fcr\u00fcme d\u00f6nd\u00fcrmek i\u00e7in (rollback):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>table.rollback()\n     .toSnapshotId(\u201c6335699880622112640\u201d)\n     .commit();<\/em><\/pre>\n\n\n\n<p><strong>Hive vs Iceberg<\/strong><\/p>\n\n\n\n<p>Hem k\u0131sa bir \u00f6zet olmas\u0131 a\u00e7\u0131s\u0131ndan hem de Hive ile olan benzerlik ve farkl\u0131l\u0131klar\u0131 g\u00f6steren a\u015fa\u011f\u0131daki tabloyu inceleyebilirsiniz:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>&nbsp;<\/td><td><strong>Hive<\/strong><\/td><td><strong>Iceberg<\/strong><\/td><\/tr><tr><td>Dosya Format\u0131<\/td><td>Text File, SequenceFile , RCFile , Avro, ORC, Parquet<\/td><td>Parquet, avro, orc<\/td><\/tr><tr><td>Zaman Yolculu\u011fu (Time Travel)<\/td><td>Yok<\/td><td>Var<\/td><\/tr><tr><td>Dosyalar\u0131n Takibi<\/td><td>Klas\u00f6r seviyesinde ( O(n) )<\/td><td>Dosya seviyesinde ( O(1) )<\/td><\/tr><tr><td>Rollbacks<\/td><td>Yok<\/td><td>Var<\/td><\/tr><tr><td>Hidden partitioning *<\/td><td>Yok<\/td><td>Var<\/td><\/tr><tr><td>In-place partition evolution**<\/td><td>Yok<\/td><td>Var<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>(*) Hive, bir partition s\u00fctunu ile kaynak s\u00fctunu aras\u0131ndaki ili\u015fkiyi takip etmez.<\/p>\n\n\n\n<p>(**) Hive\u2019da, bir parititon\u2019\u0131 de\u011fi\u015ftirmek i\u00e7in t\u00fcm tablonun yeni partition s\u00fctunu ile tamamen yeniden yaz\u0131lmas\u0131 gerekir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":5927,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[87],"tags":[145],"class_list":["post-6127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-tr-tr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apache Iceberg - Bentego<\/title>\n<meta name=\"description\" content=\"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bentego.com\/tr\/apache-iceberg\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Iceberg - Bentego\" \/>\n<meta property=\"og:description\" content=\"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bentego.com\/tr\/apache-iceberg\/\" \/>\n<meta property=\"og:site_name\" content=\"Bentego\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-26T17:20:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-20T16:09:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bentego\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bentego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/\"},\"author\":{\"name\":\"Bentego\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/person\/0348418b7b0cbca83fdd7a899d54821e\"},\"headline\":\"Apache Iceberg\",\"datePublished\":\"2021-05-26T17:20:36+00:00\",\"dateModified\":\"2025-10-20T16:09:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/\"},\"wordCount\":1037,\"publisher\":{\"@id\":\"https:\/\/bentego.com\/tr\/#organization\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png\",\"keywords\":[\"TR\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/\",\"url\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/\",\"name\":\"Apache Iceberg - Bentego\",\"isPartOf\":{\"@id\":\"https:\/\/bentego.com\/tr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png\",\"datePublished\":\"2021-05-26T17:20:36+00:00\",\"dateModified\":\"2025-10-20T16:09:30+00:00\",\"description\":\"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.\",\"breadcrumb\":{\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bentego.com\/tr\/apache-iceberg\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage\",\"url\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png\",\"contentUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png\",\"width\":2400,\"height\":1600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bentego.com\/tr\/apache-iceberg\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bentego.com\/tr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache Iceberg\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bentego.com\/tr\/#website\",\"url\":\"https:\/\/bentego.com\/tr\/\",\"name\":\"Bentego\",\"description\":\"Turning data into enterprise value\",\"publisher\":{\"@id\":\"https:\/\/bentego.com\/tr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bentego.com\/tr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/bentego.com\/tr\/#organization\",\"name\":\"Bentego\",\"url\":\"https:\/\/bentego.com\/tr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg\",\"contentUrl\":\"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg\",\"width\":433,\"height\":109,\"caption\":\"Bentego\"},\"image\":{\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/bentego.com\/tr\/#\/schema\/person\/0348418b7b0cbca83fdd7a899d54821e\",\"name\":\"Bentego\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Iceberg - Bentego","description":"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bentego.com\/tr\/apache-iceberg\/","og_locale":"tr_TR","og_type":"article","og_title":"Apache Iceberg - Bentego","og_description":"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.","og_url":"https:\/\/bentego.com\/tr\/apache-iceberg\/","og_site_name":"Bentego","article_published_time":"2021-05-26T17:20:36+00:00","article_modified_time":"2025-10-20T16:09:30+00:00","og_image":[{"width":2400,"height":1600,"url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png","type":"image\/png"}],"author":"Bentego","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Bentego","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#article","isPartOf":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/"},"author":{"name":"Bentego","@id":"https:\/\/bentego.com\/tr\/#\/schema\/person\/0348418b7b0cbca83fdd7a899d54821e"},"headline":"Apache Iceberg","datePublished":"2021-05-26T17:20:36+00:00","dateModified":"2025-10-20T16:09:30+00:00","mainEntityOfPage":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/"},"wordCount":1037,"publisher":{"@id":"https:\/\/bentego.com\/tr\/#organization"},"image":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage"},"thumbnailUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png","keywords":["TR"],"articleSection":["Blog"],"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/","url":"https:\/\/bentego.com\/tr\/apache-iceberg\/","name":"Apache Iceberg - Bentego","isPartOf":{"@id":"https:\/\/bentego.com\/tr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage"},"image":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage"},"thumbnailUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png","datePublished":"2021-05-26T17:20:36+00:00","dateModified":"2025-10-20T16:09:30+00:00","description":"Apache iceberg, petabyte boyutundaki tablolar i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynak kodlu bir tablo format\u0131d\u0131r. Tablo format\u0131n\u0131, bir tabloyu olu\u015fturan t\u00fcm dosyalar\u0131n d\u00fczenlenmesini, y\u00f6netilmesini ve izlenmesini en iyi \u015fekilde ger\u00e7ekle\u015ftirtiren bir katman olarak d\u00fc\u015f\u00fcnebiliriz.","breadcrumb":{"@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bentego.com\/tr\/apache-iceberg\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#primaryimage","url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png","contentUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/06\/Frame-87__.png","width":2400,"height":1600},{"@type":"BreadcrumbList","@id":"https:\/\/bentego.com\/tr\/apache-iceberg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bentego.com\/tr\/"},{"@type":"ListItem","position":2,"name":"Apache Iceberg"}]},{"@type":"WebSite","@id":"https:\/\/bentego.com\/tr\/#website","url":"https:\/\/bentego.com\/tr\/","name":"Bentego","description":"Turning data into enterprise value","publisher":{"@id":"https:\/\/bentego.com\/tr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bentego.com\/tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/bentego.com\/tr\/#organization","name":"Bentego","url":"https:\/\/bentego.com\/tr\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/","url":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg","contentUrl":"https:\/\/bentego.com\/wp-content\/uploads\/2025\/05\/logo-bentego.svg","width":433,"height":109,"caption":"Bentego"},"image":{"@id":"https:\/\/bentego.com\/tr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/bentego.com\/tr\/#\/schema\/person\/0348418b7b0cbca83fdd7a899d54821e","name":"Bentego"}]}},"_links":{"self":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts\/6127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/comments?post=6127"}],"version-history":[{"count":1,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts\/6127\/revisions"}],"predecessor-version":[{"id":6251,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/posts\/6127\/revisions\/6251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/media\/5927"}],"wp:attachment":[{"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/media?parent=6127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/categories?post=6127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bentego.com\/tr\/wp-json\/wp\/v2\/tags?post=6127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}