blob: 7968c4939915089485760d44ceb64aee6ab68c11 [file] [log] [blame]
<!doctype html><html><head><meta name=generator content="Hugo 0.122.0"><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content><meta name=author content><title>Apache Iceberg</title>
<link href=/css/bootstrap.css rel=stylesheet><link href=/css/markdown.css rel=stylesheet><link href=/css/katex.min.css rel=stylesheet><link href=/css/iceberg-theme.css rel=stylesheet><link href=/font-awesome-4.7.0/css/font-awesome.min.css rel=stylesheet type=text/css><link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel=stylesheet type=text/css><link href=/css/termynal.css rel=stylesheet></head><body><nav class="navbar navbar-default" role=navigation><topsection><div class=navbar-fixed-top><div><button type=button class=navbar-toggle data-toggle=collapse data-target=div.sidebar>
<span class=sr-only>Toggle navigation</span>
<span class=icon-bar></span>
<span class=icon-bar></span>
<span class=icon-bar></span>
</button>
<a class="page-scroll navbar-brand" href=https://iceberg.apache.org/><img class=top-navbar-logo src=https://iceberg.apache.org//img/iceberg-logo-icon.png> Apache Iceberg</a></div><div><input type=search class=form-control id=search-input placeholder=Search... maxlength=64 data-hotkeys=s/></div><div class=versions-dropdown><span>1.4.3</span> <i class="fa fa-chevron-down"></i><div class=versions-dropdown-content><ul><li class=versions-dropdown-selection><a href=/docs/latest>latest</a></li><li class=versions-dropdown-selection><a href=/docs/1.4.3>1.4.3</a></li><li class=versions-dropdown-selection><a href=/docs/1.4.2>1.4.2</a></li><li class=versions-dropdown-selection><a href=/docs/1.4.1>1.4.1</a></li><li class=versions-dropdown-selection><a href=/docs/1.4.0>1.4.0</a></li><li class=versions-dropdown-selection><a href=/docs/1.3.1>1.3.1</a></li><li class=versions-dropdown-selection><a href=/docs/1.3.0>1.3.0</a></li><li class=versions-dropdown-selection><a href=/docs/1.2.1>1.2.1</a></li><li class=versions-dropdown-selection><a href=/docs/1.2.0>1.2.0</a></li><li class=versions-dropdown-selection><a href=/docs/1.1.0>1.1.0</a></li><li class=versions-dropdown-selection><a href=/docs/1.0.0>1.0.0</a></li><li class=versions-dropdown-selection><a href=/docs/0.14.1>0.14.1</a></li><li class=versions-dropdown-selection><a href=/docs/0.14.0>0.14.0</a></li><li class=versions-dropdown-selection><a href=/docs/0.13.2>0.13.2</a></li><li class=versions-dropdown-selection><a href=/docs/0.13.1>0.13.1</a></li><li class=versions-dropdown-selection><a href=/docs/0.13.0>0.13.0</a></li><li class=versions-dropdown-selection><a href=/docs/0.12.1>0.12.1</a></li></ul></div></div></div><div class="navbar-menu-fixed-top navbar-pages-group"><div class=versions-dropdown><div class=topnav-page-selection><a href>Quickstart</a> <i class="fa fa-chevron-down"></i></div class="topnav-page-selection"><div class=versions-dropdown-content><ul><li class=topnav-page-selection><a href=/hive-quickstart>Hive</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/spark-quickstart>Spark</a></li class="topnav-page-selection"></ul></div></div><div class=topnav-page-selection><a href=/docs/latest>Docs</a></div class="topnav-page-selection"><div class=topnav-page-selection><a href=/releases>Releases</a></div class="topnav-page-selection"><div class=topnav-page-selection><a href=/roadmap>Roadmap</a></div class="topnav-page-selection"><div class=topnav-page-selection><a href=/blogs>Blogs</a></div class="topnav-page-selection"><div class=topnav-page-selection><a href=/talks>Talks</a></div class="topnav-page-selection"><div class=topnav-page-selection><a href=/vendors>Vendors</a></div class="topnav-page-selection"><div class=versions-dropdown><div class=topnav-page-selection><a href>Project</a> <i class="fa fa-chevron-down"></i></div class="topnav-page-selection"><div class=versions-dropdown-content><ul><li class=topnav-page-selection><a href=/community>Join</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/spec>Spec</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/view-spec>View Spec</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/puffin-spec>Puffin Spec</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/multi-engine-support>Multi-Engine Support</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/how-to-release>How To Release</a></li class="topnav-page-selection"><li class=topnav-page-selection><a href=/terms>Terms</a></li class="topnav-page-selection"></ul></div></div><div class=versions-dropdown><div class=topnav-page-selection><a href>Concepts</a> <i class="fa fa-chevron-down"></i></div class="topnav-page-selection"><div class=versions-dropdown-content><ul><li class=topnav-page-selection><a href=https://iceberg.apache.org//catalog>Catalogs</a></li class="topnav-page-selection"></ul></div></div><div class=versions-dropdown><div class=topnav-page-selection><a href>ASF</a> <i class="fa fa-chevron-down"></i></div class="topnav-page-selection"><div class=versions-dropdown-content><ul><li class=topnav-page-selection><a target=_blank href=https://www.apache.org/foundation/sponsorship.html>Donate</a></li class="topnav-page-selection"><li class=topnav-page-selection><a target=_blank href=https://www.apache.org/events/current-event.html>Events</a></li class="topnav-page-selection"><li class=topnav-page-selection><a target=_blank href=https://www.apache.org/licenses/>License</a></li class="topnav-page-selection"><li class=topnav-page-selection><a target=_blank href=https://www.apache.org/security/>Security</a></li class="topnav-page-selection"><li class=topnav-page-selection><a target=_blank href=https://www.apache.org/foundation/thanks.html>Sponsors</a></li class="topnav-page-selection"></ul></div></div><div class=topnav-page-selection><a href=https://github.com/apache/iceberg target=_blank><img src=https://iceberg.apache.org//img/GitHub-Mark.png target=_blank class=top-navbar-logo></a></div><div class=topnav-page-selection><a href=https://join.slack.com/t/apache-iceberg/shared_invite/zt-287g3akar-K9Oe_En5j1UL7Y_Ikpai3A target=_blank><img src=https://iceberg.apache.org//img/Slack_Mark_Web.png target=_blank class=top-navbar-logo></a></div></div></topsection></nav><section><div id=search-results-container><ul id=search-results></ul></div></section><div id=content><section id=intro><div class=intro-header><div class=container><div class=row><div class=col-lg-12><div class=intro-message><h1>Apache Iceberg</h1><h3>The open table format for analytic datasets.</h3><hr class=intro-divider><ul class="list-inline intro-social-buttons"><li><a href=https://iceberg.apache.org//community class="btn btn-default btn-lg"><i class="fa fa-comments fa-fw"></i>
<span class=network-name>Community</span></a></li><li><a href=https://github.com/apache/iceberg class="btn btn-default btn-lg"><i class="fa fa-github fa-fw"></i>
<span class=network-name>github</span></a></li><li><a href=https://join.slack.com/t/apache-iceberg/shared_invite/zt-287g3akar-K9Oe_En5j1UL7Y_Ikpai3A class="btn btn-default btn-lg"><i class="fa fa-slack fa-fw"></i>
<span class=network-name>slack</span></a></li></ul></div></div></div></div></div></section><section id=about class="container content-section text-center"><div class=row><div class="col-lg-8 col-lg-offset-2"><br><br><h2>What is Iceberg?</h2><br>Iceberg is a high-performance format for huge analytic tables. Iceberg brings the reliability and simplicity of SQL tables to big data, while making it possible for engines like Spark, Trino, Flink, Presto, Hive and Impala to safely work with the same tables, at the same time.<div class=button-box><ul class="list-inline intro-social-buttons"><li><a href=/getting-started class="btn btn-default btn-lg"><span class=network-name>Learn More</span></a></li><ul></div><br></div></div></section><section id=services><div class=content-section-a><div class=container><div class=row><div class="col-lg-5 col-sm-6"><hr class=section-heading-spacer><div class=clearfix></div><h2 class=section-heading>Expressive SQL</h2>Iceberg supports flexible SQL commands to merge new data, update existing rows, and perform targeted deletes. Iceberg can eagerly rewrite data files for read performance, or it can use delete deltas for faster updates.<ul class="list-inline intro-social-buttons"><li><a href=/docs/latest/spark-writes/ class="btn btn-default btn-lg"><span class=network-name>Learn More</span></a></li></ul></div><div class="col-lg-5 col-lg col-sm-6"><div id=termynal-expressive-sql data-termynal data-ty-startdelay=2000 data-ty-typedelay=20 data-ty-linedelay=500><span data-ty=input data-ty-cursor= data-ty-prompt="sql>">MERGE INTO prod.nyc.taxis pt</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>USING (SELECT * FROM staging.nyc.taxis) st</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>ON pt.id = st.id</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>WHEN NOT MATCHED THEN INSERT *;</span>
<span data-ty>Done!</span>
<span data-ty=input data-ty-cursor= data-ty-prompt="sql>"></span></div></div></div></div></div><div class=content-section-b><div class=container><div class=row><div class="col-lg-5 col-lg-offset-1 col-sm-push-6 col-sm-6"><hr class=section-heading-spacer><div class=clearfix></div><h2 class=section-heading>Full Schema Evolution</h2>Schema evolution just works. Adding a column won't bring back "zombie" data. Columns can be renamed and reordered. Best of all, schema changes never require rewriting your table.<ul class="list-inline intro-social-buttons"><li><a href=/docs/latest/evolution/ class="btn btn-default btn-lg"><span class=network-name>Learn More</span></a></li></ul></div><div class="col-lg-5 col-sm-pull-6 col-sm-6"><div id=termynal data-termynal data-ty-startdelay=4000 data-ty-typedelay=20 data-ty-linedelay=500><span data-ty=input data-ty-cursor= data-ty-prompt="sql>">ALTER TABLE taxis</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>ALTER COLUMN trip_distance</span>
<span data-ty=input data-ty-cursor= data-ty-prompt data-ty-delay=2500>TYPE double;</span>
<span data-ty>Done!</span>
<span data-ty=input data-ty-cursor= data-ty-prompt="sql>">ALTER TABLE taxis</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>ALTER COLUMN trip_distance</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>AFTER fare;</span>
<span data-ty>Done!</span>
<span data-ty=input data-ty-cursor= data-ty-prompt="sql>">ALTER TABLE taxis</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>RENAME COLUMN trip_distance</span>
<span data-ty=input data-ty-cursor= data-ty-prompt>TO distance;</span>
<span data-ty>Done!</span></div></div></div></div></div><div class=content-section-a><div class=container><div class=row><div class="col-lg-5 col-sm-6"><hr class=section-heading-spacer><div class=clearfix></div><h2 class=section-heading>Hidden Partitioning</h2>Iceberg handles the tedious and error-prone task of producing partition values for rows in a table and skips unnecessary partitions and files automatically. No extra filters are needed for fast queries, and table layout can be updated as data or queries change.<ul class="list-inline intro-social-buttons"><li><a href=/docs/latest/partitioning/#icebergs-hidden-partitioning class="btn btn-default btn-lg"><span class=network-name>Learn More</span></a></li></ul></div><div class="col-lg-5 col-lg col-sm-6"></div><div class="col-lg-5 col-lg-offset-2 col-sm-6"><script src=https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js></script><lottie-player src=https://iceberg.apache.org/lottie/hidden-partitioning-animation.json background=transparent speed=0.5 style="width: 600px; height: 400px;" loop autoplay></lottie-player></div></div></div></div><div class=content-section-b><div class=container><div class=row><div class="col-lg-5 col-lg-offset-1 col-sm-push-6 col-sm-6"><hr class=section-heading-spacer><div class=clearfix></div><h2 class=section-heading>Time Travel and Rollback</h2>Time-travel enables reproducible queries that use exactly the same table snapshot, or lets users easily examine changes. Version rollback allows users to quickly correct problems by resetting tables to a good state.<ul class="list-inline intro-social-buttons"><li><a href=/docs/latest/spark-queries/#time-travel class="btn btn-default btn-lg"><span class=network-name>Learn More</span></a></li></ul></div><div class="col-lg-5 col-sm-pull-6 col-sm-6"><div class=termynal-container><div id=termynal-time-travel data-termynal data-ty-startdelay=6000 data-ty-typedelay=20 data-ty-linedelay=500><span data-ty=input data-ty-cursor= data-ty-prompt="sql>">SELECT count(*) FROM nyc.taxis</span>
<span data-ty>2,853,020</span>
<span data-ty=input data-ty-cursor= data-ty-prompt="sql>">SELECT count(*) FROM nyc.taxis FOR VERSION AS OF 2188465307835585443</span>
<span data-ty>2,798,371</span>
<span data-ty=input data-ty-cursor= data-ty-prompt="sql>">SELECT count(*) FROM nyc.taxis FOR TIMESTAMP AS OF TIMESTAMP '2022-01-01 00:00:00.000000 Z'</span>
<span data-ty>2,798,371</span></div></div></div></div></div></div><div class=content-section-a><div class=container><div class=row><div class="col-lg-5 col-sm-6"><hr class=section-heading-spacer><div class=clearfix></div><h2 class=section-heading>Data Compaction</h2>Data compaction is supported out-of-the-box and you can choose from different rewrite strategies such as bin-packing or sorting to optimize file layout and size.</div><div class="col-lg-5 col-lg col-sm-6"><div id=termynal-data-compaction data-termynal data-ty-startdelay=8000 data-ty-typedelay=20 data-ty-linedelay=500><span data-ty=input data-ty-cursor= data-ty-prompt="sql>">CALL system.rewrite_data_files("nyc.taxis");</span></div></div></div></div></div></section><section id=pricing class="container content-section text-center"></section><section id=contact><div class=contact><div class=container><div class=row><div class=col-lg-8><ul class="list-inline contact-social-buttons"><li><a href=https://iceberg.apache.org//community class="btn btn-default btn-lg"><i class="fa fa-comments fa-fw"></i>
<span class=network-name>Community</span></a></li><li><a href=https://github.com/apache/iceberg class="btn btn-default btn-lg"><i class="fa fa-github fa-fw"></i>
<span class=network-name>github</span></a></li><li><a href=https://join.slack.com/t/apache-iceberg/shared_invite/zt-287g3akar-K9Oe_En5j1UL7Y_Ikpai3A class="btn btn-default btn-lg"><i class="fa fa-slack fa-fw"></i>
<span class=network-name>slack</span></a></li></ul></div></div></div></div></section><script src=https://iceberg.apache.org//js/jquery-1.11.0.js></script><script src=https://iceberg.apache.org//js/jquery.easing.min.js></script><script type=text/javascript src=https://iceberg.apache.org//js/search.js></script><script src=https://iceberg.apache.org//js/bootstrap.min.js></script><script src=https://iceberg.apache.org//js/iceberg-theme.js></script><script src=https://iceberg.apache.org//js/termynal.js data-termynal-container=#termynal|#termynal-data-compaction|#termynal-expressive-sql|#termynal-time-travel></script></div>