{"id":4492,"date":"2025-08-09T17:00:43","date_gmt":"2025-08-09T17:00:43","guid":{"rendered":"https:\/\/uplatz.com\/blog\/?p=4492"},"modified":"2025-08-28T13:10:50","modified_gmt":"2025-08-28T13:10:50","slug":"apache-flink-pocket-book-2","status":"publish","type":"post","link":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/","title":{"rendered":"Apache Iceberg Pocket Book"},"content":{"rendered":"<p><!-- Apache Iceberg Pocket Book (Wide Layout, Readable Code, Scoped Styles) --><\/p>\n<div style=\"margin: 16px 0;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-4952\" src=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-1024x576.jpg\" alt=\"\" width=\"840\" height=\"473\" srcset=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-1024x576.jpg 1024w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-300x169.jpg 300w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-768x432.jpg 768w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg.jpg 1280w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<style>\n    .wp-iceberg-pb { font-family: Arial, sans-serif; max-width: 1320px; margin:0 auto; }<br \/>\n    .wp-iceberg-pb .heading{<br \/>\n      background: linear-gradient(135deg, #e0f2fe, #ccfbf1);<br \/>\n      color:#0f172a; padding:22px 24px; border-radius:14px;<br \/>\n      text-align:center; margin-bottom:18px; box-shadow:0 8px 20px rgba(0,0,0,.08);<br \/>\n      border:1px solid #cbd5e1;<br \/>\n    }<br \/>\n    .wp-iceberg-pb .heading h2{ margin:0; font-size:2.1rem; letter-spacing:.2px; }<br \/>\n    .wp-iceberg-pb .heading p{ margin:6px 0 0; font-size:1.02rem; opacity:.9; }<\/p>\n<p>    \/* Wide, dense grid *\/<br \/>\n    .wp-iceberg-pb .grid{<br \/>\n      display:grid; gap:14px;<br \/>\n      grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));<br \/>\n    }<br \/>\n    @media (min-width:1200px){<br \/>\n      .wp-iceberg-pb .grid{ grid-template-columns: repeat(3, 1fr); }<br \/>\n    }<\/p>\n<p>    .wp-iceberg-pb .section-title{<br \/>\n      grid-column:1\/-1; background:#f8fafc; border-left:8px solid #0ea5e9;<br \/>\n      padding:12px 16px; border-radius:10px; font-weight:700; color:#0f172a; font-size:1.08rem;<br \/>\n      box-shadow:0 2px 8px rgba(0,0,0,.05); border:1px solid #e2e8f0;<br \/>\n    }<br \/>\n    .wp-iceberg-pb .card{<br \/>\n      background:#ffffff; border-left:6px solid #0ea5e9;<br \/>\n      padding:18px; border-radius:12px;<br \/>\n      box-shadow:0 6px 14px rgba(0,0,0,.06);<br \/>\n      transition:transform .12s ease, box-shadow .12s ease;<br \/>\n      border:1px solid #e5e7eb;<br \/>\n    }<br \/>\n    .wp-iceberg-pb .card:hover{ transform: translateY(-3px); box-shadow:0 10px 22px rgba(0,0,0,.08); }<br \/>\n    .wp-iceberg-pb .card h3{ margin:0 0 10px; font-size:1.12rem; color:#0f172a; }<br \/>\n    .wp-iceberg-pb .card p{ margin:0; font-size:.96rem; color:#334155; line-height:1.62; }<\/p>\n<p>    \/* Color helpers *\/<br \/>\n    .bg-blue { border-left-color:#0ea5e9 !important; background:#f0f9ff !important; }<br \/>\n    .bg-green{ border-left-color:#10b981 !important; background:#f0fdf4 !important; }<br \/>\n    .bg-amber{ border-left-color:#f59e0b !important; background:#fffbeb !important; }<br \/>\n    .bg-violet{ border-left-color:#8b5cf6 !important; background:#f5f3ff !important; }<br \/>\n    .bg-rose{ border-left-color:#ef4444 !important; background:#fff1f2 !important; }<br \/>\n    .bg-cyan{ border-left-color:#06b6d4 !important; background:#ecfeff !important; }<br \/>\n    .bg-lime{ border-left-color:#16a34a !important; background:#f0fdf4 !important; }<br \/>\n    .bg-orange{ border-left-color:#f97316 !important; background:#fff7ed !important; }<br \/>\n    .bg-indigo{ border-left-color:#6366f1 !important; background:#eef2ff !important; }<br \/>\n    .bg-emerald{ border-left-color:#22c55e !important; background:#ecfdf5 !important; }<br \/>\n    .bg-slate{ border-left-color:#334155 !important; background:#f8fafc !important; }<\/p>\n<p>    \/* Utilities *\/<br \/>\n    .tight ul{ margin:0; padding-left:18px; }<br \/>\n    .tight li{ margin:4px 0; }<br \/>\n    .mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; }<br \/>\n    .muted{ color:#64748b; }<br \/>\n    .wp-iceberg-pb code{ background:#f1f5f9; padding:0 4px; border-radius:4px; border:1px solid #e2e8f0; }<br \/>\n    .wp-iceberg-pb pre{<br \/>\n      background:#f5f5f5; color:#111827; border:1px solid #e5e7eb;<br \/>\n      padding:12px; border-radius:8px; overflow:auto; font-size:.92rem; line-height:1.55;<br \/>\n    }<br \/>\n    .q{font-weight:700;}<br \/>\n    .qa p{ margin:8px 0; }<br \/>\n    .qa b{ color:#0f172a; }<br \/>\n  <\/style>\n<div class=\"wp-iceberg-pb\">\n<div class=\"heading\">\n<h2>Apache Iceberg Pocket Book<\/h2>\n<p>ACID lakehouse tables \u2022 Schema\/partition evolution \u2022 Time travel \u2022 Hidden partitioning \u2022 Maintenance &amp; SQL snippets \u2022 Interview Q&amp;A<\/p>\n<\/div>\n<div class=\"grid\"><!-- ===================== SECTION 1 ===================== --><\/p>\n<div class=\"section-title\">Section 1 \u2014 Fundamentals<\/div>\n<div class=\"card bg-blue\">\n<h3>1) What is Apache Iceberg?<\/h3>\n<p>Iceberg is an open table format for data lakes that brings database-like guarantees (ACID, snapshots) to files on S3\/GCS\/ADLS\/HDFS. It separates <b>metadata<\/b> from <b>data files<\/b> so engines like Spark, Flink, Trino, and Hive can read\/write consistently at scale.<\/p>\n<pre><code class=\"mono\"># Spark shell with Iceberg (example coords)\r\nspark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.5.0<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>2) Core Building Blocks<\/h3>\n<ul class=\"tight\">\n<li><b>Table metadata<\/b>: schema, partition spec, properties, current snapshot.<\/li>\n<li><b>Snapshots<\/b>: point-in-time views; each write creates a new snapshot.<\/li>\n<li><b>Manifests &amp; manifest lists<\/b>: indexes of data files and partitions.<\/li>\n<li><b>Data files<\/b>: typically Parquet\/ORC\/Avro in object storage.<\/li>\n<\/ul>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>3) Why Iceberg vs Hive tables?<\/h3>\n<p>Iceberg tracks files in manifests (not metastore partitions only), supports <b>hidden partitioning<\/b>, reliable deletes\/updates, schema &amp; partition evolution, and time travel with isolation \u2014 avoiding the \u201cdirectory listing\u201d pitfalls of classic Hive tables.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>4) Catalogs<\/h3>\n<p>Tables live in a catalog that stores metadata locations: Hadoop, Hive, REST, Glue, Nessie, etc. Choose one and configure your engines to point to it for consistent reads\/writes.<\/p>\n<pre><code class=\"mono\">spark.sql(\"CREATE CATALOG lake USING 'org.apache.iceberg.spark.SparkCatalog' \\\r\n  OPTIONS('type'='hadoop','warehouse'='s3:\/\/lakehouse\/warehouse')\")<\/code><\/pre>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>5) Table Creation (Spark SQL)<\/h3>\n<pre><code class=\"mono\">CREATE TABLE lake.sales (\r\n  id BIGINT, user_id STRING, amount DOUBLE, ts TIMESTAMP, country STRING\r\n) USING iceberg\r\nPARTITIONED BY (years(ts), bucket(16, user_id));<\/code><\/pre>\n<p class=\"muted\">Hidden partitioning means you don\u2019t include partition columns in queries; pruning is automatic.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 2 ===================== --><\/p>\n<div class=\"section-title\">Section 2 \u2014 Writing, Reading &amp; Time Travel<\/div>\n<div class=\"card bg-blue\">\n<h3>6) Insert \/ Update \/ Delete<\/h3>\n<pre><code class=\"mono\">INSERT INTO lake.sales VALUES (1,'u1',19.5, TIMESTAMP '2025-08-09 10:00:00','IN');\r\n\r\nUPDATE lake.sales SET amount = 21.0 WHERE id = 1;\r\n\r\nDELETE FROM lake.sales WHERE id = 1;<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>7) MERGE (Upsert)<\/h3>\n<pre><code class=\"mono\">MERGE INTO lake.sales t\r\nUSING lake.staging s\r\nON t.id = s.id\r\nWHEN MATCHED THEN UPDATE SET *\r\nWHEN NOT MATCHED THEN INSERT *;<\/code><\/pre>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>8) Time Travel<\/h3>\n<p>Query any snapshot by id or timestamp for audits and debugging.<\/p>\n<pre><code class=\"mono\">-- by snapshot id\r\nSELECT * FROM lake.sales VERSION AS OF 1789456123456;\r\n-- by timestamp\r\nSELECT * FROM lake.sales TIMESTAMP AS OF '2025-08-01 09:30:00';<\/code><\/pre>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>9) Incremental Reads<\/h3>\n<p>Pull only rows changed between snapshots for efficient downstream ETL.<\/p>\n<pre><code class=\"mono\">SELECT * FROM lake.sales CHANGES BETWEEN 1789000000000 AND 1789456123456;<\/code><\/pre>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>10) Row-Level Deletes &amp; Position Deletes<\/h3>\n<p>Iceberg supports <b>equality deletes<\/b> (by key) and <b>position deletes<\/b> (file\/row positions). Engines merge deletes with data files at read time for consistent results.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 3 ===================== --><\/p>\n<div class=\"section-title\">Section 3 \u2014 Partitioning, Evolution &amp; Performance<\/div>\n<div class=\"card bg-blue\">\n<h3>11) Hidden Partitioning<\/h3>\n<p>Define transforms such as <code>years(ts)<\/code>, <code>hours(ts)<\/code>, <code>bucket(32, col)<\/code>, <code>truncate(col, N)<\/code>. Queries stay simple; pruning is automatic via manifests.<\/p>\n<\/div>\n<div class=\"card bg-green\">\n<h3>12) Partition Evolution<\/h3>\n<p>Change the partition spec over time without rewriting old data; Iceberg tracks specs per file so reads remain correct across generations.<\/p>\n<pre><code class=\"mono\">ALTER TABLE lake.sales ADD PARTITION FIELD hours(ts);<\/code><\/pre>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>13) Schema Evolution<\/h3>\n<p>Add, drop, rename, reorder columns safely. Field IDs ensure compatibility across writers and readers.<\/p>\n<pre><code class=\"mono\">ALTER TABLE lake.sales ADD COLUMN channel STRING;\r\nALTER TABLE lake.sales RENAME COLUMN user_id TO customer_id;<\/code><\/pre>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>14) Compaction (File Size Optimization)<\/h3>\n<p>Combine many small files into larger ones for faster scans.<\/p>\n<pre><code class=\"mono\">CALL lake.system.rewrite_data_files(table =&gt; 'lake.sales', options =&gt; map('min-input-files','10'));<\/code><\/pre>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>15) Metadata &amp; Manifest Maintenance<\/h3>\n<p>Rewrite manifests to improve pruning and clean old snapshots to control storage.<\/p>\n<pre><code class=\"mono\">CALL lake.system.rewrite_manifests('lake.sales');\r\nCALL lake.system.expire_snapshots('lake.sales', TIMESTAMP '2025-07-01 00:00:00');<\/code><\/pre>\n<\/div>\n<p><!-- ===================== SECTION 4 ===================== --><\/p>\n<div class=\"section-title\">Section 4 \u2014 Engines, SQL &amp; Integrations<\/div>\n<div class=\"card bg-blue\">\n<h3>16) Spark Config (Example)<\/h3>\n<pre><code class=\"mono\">spark.sql.catalog.lake=org.apache.iceberg.spark.SparkCatalog\r\nspark.sql.catalog.lake.type=hadoop\r\nspark.sql.catalog.lake.warehouse=s3:\/\/lakehouse\/warehouse<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>17) Trino\/Presto SQL<\/h3>\n<pre><code class=\"mono\">SELECT * FROM lake.default.sales WHERE ts &gt; current_timestamp - INTERVAL '1' DAY;\r\nCALL system.expire_snapshots('lake.default.sales', date('2025-07-01'));<\/code><\/pre>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>18) Flink Streaming Writes<\/h3>\n<pre><code class=\"mono\">-- Flink SQL sink (simplified)\r\nCREATE TABLE lake.sales (\r\n  id BIGINT, user_id STRING, amount DOUBLE, ts TIMESTAMP(3), WATERMARK FOR ts AS ts\r\n) PARTITIONED BY (years(ts))\r\nWITH ('connector'='iceberg','catalog-name'='lake','catalog-type'='hadoop','warehouse'='s3:\/\/lakehouse\/warehouse');<\/code><\/pre>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>19) Governance &amp; Security<\/h3>\n<p>Use catalog-level auth (Glue\/Hive\/REST), S3\/ADLS IAM policies, encryption at rest, and object-lock\/versioning if required. Keep audit trails via snapshots and <code>CHANGES<\/code> queries.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>20) Common Pitfalls<\/h3>\n<ul class=\"tight\">\n<li>Too many tiny files \u2192 schedule compactions.<\/li>\n<li>Mismatched engine versions\/connectors.<\/li>\n<li>Forgetting snapshot expiry \u2192 metadata growth.<\/li>\n<li>Over-partitioning or skewed buckets \u2192 poor pruning.<\/li>\n<\/ul>\n<\/div>\n<p><!-- ===================== SECTION 5 ===================== --><\/p>\n<div class=\"section-title\">Section 5 \u2014 Ops, Tuning &amp; Interview Q&amp;A<\/div>\n<div class=\"card bg-blue\">\n<h3>21) Ops Checklist<\/h3>\n<ul class=\"tight\">\n<li>Automate <code>expire_snapshots<\/code> and <code>rewrite_data_files<\/code>.<\/li>\n<li>Watch table metrics: file count, avg file size, snapshots, manifests.<\/li>\n<li>Validate schema\/partition changes in lower envs first.<\/li>\n<li>Back up catalog metadata and enable bucket versioning.<\/li>\n<\/ul>\n<\/div>\n<div class=\"card bg-green\">\n<h3>22) Performance Tips<\/h3>\n<ul class=\"tight\">\n<li>Prefer Parquet with column pruning + ZSTD or Snappy.<\/li>\n<li>Aim for 128\u2013512\u00a0MB target file size.<\/li>\n<li>Use partition transforms that match query filters.<\/li>\n<li>Leverage vectorized reads in engines.<\/li>\n<\/ul>\n<\/div>\n<div class=\"card bg-amber qa\">\n<h3>23) Interview Q&amp;A \u2014 10 Quick Ones<\/h3>\n<p><b>1)<\/b> <i>Iceberg vs Delta vs Hudi?<\/i> Iceberg excels at hidden + evolving partitions and multi-engine support; Delta has tight Databricks integration; Hudi focuses on fast upserts\/incremental pulls.<\/p>\n<p><b>2)<\/b> <i>What is a snapshot?<\/i> Immutable table state pointer; queries reference the current snapshot unless time traveling.<\/p>\n<p><b>3)<\/b> <i>How do deletes work?<\/i> Equality or position deletes are merged at read time for consistency.<\/p>\n<p><b>4)<\/b> <i>Why compaction?<\/i> Fewer, larger files improve scan throughput and pruning.<\/p>\n<p><b>5)<\/b> <i>Hidden partitioning?<\/i> Engine applies transforms; users query on natural columns without <code>PARTITION BY<\/code> predicates.<\/p>\n<p><b>6)<\/b> <i>Partition evolution?<\/i> New spec added; old files keep prior spec \u2014 reads remain correct.<\/p>\n<p><b>7)<\/b> <i>How to do incremental ETL?<\/i> Use <code>CHANGES BETWEEN<\/code> (or engine support) to fetch only modified rows.<\/p>\n<p><b>8)<\/b> <i>Concurrency control?<\/i> Optimistic commits with atomic metadata pointer updates.<\/p>\n<p><b>9)<\/b> <i>Catalog choice?<\/i> Use a centralized catalog (Glue\/Hive\/REST) shared by all engines.<\/p>\n<p><b>10)<\/b> <i>Cost control?<\/i> Expire snapshots, compact small files, and avoid over-partitioning.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Apache Iceberg Pocket Book ACID lakehouse tables \u2022 Schema\/partition evolution \u2022 Time travel \u2022 Hidden partitioning \u2022 Maintenance &amp; SQL snippets \u2022 Interview Q&amp;A Section 1 \u2014 Fundamentals 1) What <span class=\"readmore\"><a href=\"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/\">Read More &#8230;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2483,2462],"tags":[],"class_list":["post-4492","post","type-post","status-publish","format-standard","hentry","category-apache-iceberg","category-pocket-book"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Iceberg Pocket Book | Uplatz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Iceberg Pocket Book | Uplatz Blog\" \/>\n<meta property=\"og:description\" content=\"Apache Iceberg Pocket Book ACID lakehouse tables \u2022 Schema\/partition evolution \u2022 Time travel \u2022 Hidden partitioning \u2022 Maintenance &amp; SQL snippets \u2022 Interview Q&amp;A Section 1 \u2014 Fundamentals 1) What Read More ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Uplatz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-09T17:00:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-28T13:10:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"uplatzblog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:site\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"uplatzblog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/\"},\"author\":{\"name\":\"uplatzblog\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\"},\"headline\":\"Apache Iceberg Pocket Book\",\"datePublished\":\"2025-08-09T17:00:43+00:00\",\"dateModified\":\"2025-08-28T13:10:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/\"},\"wordCount\":627,\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Apache-Iceberg-1024x576.jpg\",\"articleSection\":[\"Apache Iceberg\",\"Pocket Book\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/\",\"name\":\"Apache Iceberg Pocket Book | Uplatz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Apache-Iceberg-1024x576.jpg\",\"datePublished\":\"2025-08-09T17:00:43+00:00\",\"dateModified\":\"2025-08-28T13:10:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Apache-Iceberg.jpg\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Apache-Iceberg.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/apache-flink-pocket-book-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache Iceberg Pocket Book\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"name\":\"Uplatz Blog\",\"description\":\"Uplatz is a global IT Training &amp; Consulting company\",\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\",\"name\":\"uplatz.com\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"width\":1280,\"height\":800,\"caption\":\"uplatz.com\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Uplatz-1077816825610769\\\/\",\"https:\\\/\\\/x.com\\\/uplatz_global\",\"https:\\\/\\\/www.instagram.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\",\"name\":\"uplatzblog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"caption\":\"uplatzblog\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Iceberg Pocket Book | Uplatz Blog","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:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/","og_locale":"en_US","og_type":"article","og_title":"Apache Iceberg Pocket Book | Uplatz Blog","og_description":"Apache Iceberg Pocket Book ACID lakehouse tables \u2022 Schema\/partition evolution \u2022 Time travel \u2022 Hidden partitioning \u2022 Maintenance &amp; SQL snippets \u2022 Interview Q&amp;A Section 1 \u2014 Fundamentals 1) What Read More ...","og_url":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/","og_site_name":"Uplatz Blog","article_publisher":"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","article_published_time":"2025-08-09T17:00:43+00:00","article_modified_time":"2025-08-28T13:10:50+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg.jpg","type":"image\/jpeg"}],"author":"uplatzblog","twitter_card":"summary_large_image","twitter_creator":"@uplatz_global","twitter_site":"@uplatz_global","twitter_misc":{"Written by":"uplatzblog","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#article","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/"},"author":{"name":"uplatzblog","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e"},"headline":"Apache Iceberg Pocket Book","datePublished":"2025-08-09T17:00:43+00:00","dateModified":"2025-08-28T13:10:50+00:00","mainEntityOfPage":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/"},"wordCount":627,"publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"image":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-1024x576.jpg","articleSection":["Apache Iceberg","Pocket Book"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/","url":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/","name":"Apache Iceberg Pocket Book | Uplatz Blog","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#primaryimage"},"image":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg-1024x576.jpg","datePublished":"2025-08-09T17:00:43+00:00","dateModified":"2025-08-28T13:10:50+00:00","breadcrumb":{"@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#primaryimage","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg.jpg","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Apache-Iceberg.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/uplatz.com\/blog\/apache-flink-pocket-book-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uplatz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache Iceberg Pocket Book"}]},{"@type":"WebSite","@id":"https:\/\/uplatz.com\/blog\/#website","url":"https:\/\/uplatz.com\/blog\/","name":"Uplatz Blog","description":"Uplatz is a global IT Training &amp; Consulting company","publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uplatz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uplatz.com\/blog\/#organization","name":"uplatz.com","url":"https:\/\/uplatz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","width":1280,"height":800,"caption":"uplatz.com"},"image":{"@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","https:\/\/x.com\/uplatz_global","https:\/\/www.instagram.com\/","https:\/\/www.linkedin.com\/company\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz"]},{"@type":"Person","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e","name":"uplatzblog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","caption":"uplatzblog"}}]}},"_links":{"self":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/comments?post=4492"}],"version-history":[{"count":6,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4492\/revisions"}],"predecessor-version":[{"id":4953,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4492\/revisions\/4953"}],"wp:attachment":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media?parent=4492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/categories?post=4492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/tags?post=4492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}