{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,30]],"date-time":"2025-10-30T07:18:46Z","timestamp":1761808726271,"version":"3.32.0"},"reference-count":59,"publisher":"Association for Computing Machinery (ACM)","issue":"12","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2024,8]]},"abstract":"<jats:p>Data lakehouses combine the almost infinite scale and diverse tooling of a data lake with the reliability and functionality of a data warehouse. This paper presents extensions that enhance data lake-houses using Apache Iceberg and Apache Spark with performant petabyte-scale row-level operations. The framework is capable of handling both high-density and sparse modifications by either materializing changes at the file level during writes or producing equality and position deletes that are lazily merged with existing data during reads. The paper also outlines essential improvements in determining and applying row-level changes: eliminating expensive shuffles with storage-partitioned joins, minimizing write amplification with runtime filtering, and optimizing the layout of output data with adaptive writes. Our evaluation demonstrates the relative strengths and weaknesses of the various materialization strategies, highlighting the use cases that require each technique. We also show an order of magnitude improvement in performance after our enhancements.<\/jats:p>","DOI":"10.14778\/3685800.3685834","type":"journal-article","created":{"date-parts":[[2024,11,8]],"date-time":"2024-11-08T17:25:21Z","timestamp":1731086721000},"page":"4159-4172","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Petabyte-Scale Row-Level Operations in Data Lakehouses"],"prefix":"10.14778","volume":"17","author":[{"given":"Anton","family":"Okolnychyi","sequence":"first","affiliation":[{"name":"Apple"}]},{"given":"Chao","family":"Sun","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"Kazuyuki","family":"Tanimura","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"Russell","family":"Spitzer","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"Ryan","family":"Blue","sequence":"additional","affiliation":[{"name":"Tabular"}]},{"given":"Szehon","family":"Ho","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"Yufei","family":"Gu","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"Vishwanath","family":"Lakkundi","sequence":"additional","affiliation":[{"name":"Apple"}]},{"given":"DB","family":"Tsai","sequence":"additional","affiliation":[{"name":"Apple"}]}],"member":"320","published-online":{"date-parts":[[2024,11,8]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"2006. Apache Hadoop. Retrieved February 2 2024 from https:\/\/hadoop.apache.org"},{"key":"e_1_2_1_2_1","unstructured":"2009. Apache Avro. Retrieved February 2 2024 from https:\/\/avro.apache.org"},{"key":"e_1_2_1_3_1","unstructured":"2013. Apache ORC. Retrieved February 2 2024 from https:\/\/orc.apache.org"},{"key":"e_1_2_1_4_1","unstructured":"2013. Apache Parquet. Retrieved February 2 2024 from https:\/\/parquet.apache.org"},{"key":"e_1_2_1_5_1","unstructured":"2016. Apache CarbonData. Retrieved Feb 2 2024 from https:\/\/carbondata.apache.org"},{"key":"e_1_2_1_6_1","unstructured":"2016. Apache Hudi. Retrieved February 2 2024 from https:\/\/hudi.apache.org"},{"key":"e_1_2_1_7_1","unstructured":"2018. Apache DataFusion. Retrieved May 1 2024 from https:\/\/github.com\/apache\/datafusion"},{"key":"e_1_2_1_8_1","unstructured":"2018. Apache Iceberg. Retrieved February 2 2024 from https:\/\/iceberg.apache.org"},{"volume-title":"Apache Iceberg Java Library. Retrieved","year":"2024","key":"e_1_2_1_9_1","unstructured":"2018. Apache Iceberg Java Library. Retrieved Feb 2, 2024 from https:\/\/github.com\/apache\/iceberg"},{"volume-title":"Apache Iceberg Spec. Retrieved","year":"2024","key":"e_1_2_1_10_1","unstructured":"2018. Apache Iceberg Spec. Retrieved Feb 2, 2024 from https:\/\/iceberg.apache.org\/spec\/"},{"volume-title":"Delta Lake S3 Writes. Retrieved","year":"2024","key":"e_1_2_1_11_1","unstructured":"2019. Delta Lake S3 Writes. Retrieved February 20, 2024 from https:\/\/github.com\/delta-io\/delta\/issues\/39"},{"volume-title":"Apache Iceberg Python Library. Retrieved","year":"2024","key":"e_1_2_1_12_1","unstructured":"2020. Apache Iceberg Python Library. Retrieved Feb 2, 2024 from https:\/\/github.com\/apache\/iceberg-python"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_13_1","unstructured":"2021. Apache Spark Storage-Partitioned Joins. Retrieved April 12, 2024 from https:\/\/issues.apache.org\/jira\/browse\/SPARK-37375"},{"volume-title":"Delta Lake DELETE Subquery Support. Retrieved","year":"2024","key":"e_1_2_1_14_1","unstructured":"2021. Delta Lake DELETE Subquery Support. Retrieved June 9, 2024 from https:\/\/github.com\/delta-io\/delta\/issues\/730"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_15_1","unstructured":"2022. Apache Spark Delta Writer. Retrieved March 25, 2024 from https:\/\/github.com\/apache\/spark\/blob\/3bb762dc032866cfb304019cba6db01125556c2f\/sql\/catalyst\/src\/main\/java\/org\/apache\/spark\/sql\/connector\/write\/DeltaWriter.java"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_16_1","unstructured":"2022. Apache Spark Row-Level Operation. Retrieved March 25, 2024 from https:\/\/github.com\/apache\/spark\/blob\/3bb762dc032866cfb304019cba6db01125556c2f\/sql\/catalyst\/src\/main\/java\/org\/apache\/spark\/sql\/connector\/write\/RowLevelOperation.java"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_17_1","unstructured":"2023. Apache Hive Transactions. Retrieved June 14, 2024 from https:\/\/cwiki.apache.org\/confluence\/display\/hive\/hive+transactions"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_18_1","unstructured":"2023. Apache Spark Configurable Advisory Partition Size for Writes. Retrieved July 17, 2024 from https:\/\/issues.apache.org\/jira\/browse\/SPARK-42779"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_19_1","unstructured":"2024. Apache DataFusion Comet. Retrieved June 14, 2024 from https:\/\/github.com\/apache\/datafusion-comet"},{"volume-title":"Apache Hive DML Language Manual. Retrieved","year":"2024","key":"e_1_2_1_20_1","unstructured":"2024. Apache Hive DML Language Manual. Retrieved June 7, 2024 from https:\/\/cwiki.apache.org\/confluence\/display\/hive\/languagemanual+dml"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_21_1","unstructured":"2024. Apache Iceberg Distribution Modes. Retrieved July 17, 2024 from https:\/\/iceberg.apache.org\/docs\/latest\/spark-writes\/#writing-distribution-modes"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_22_1","unstructured":"2024. Apache Iceberg Partition Transforms. Retrieved June 14, 2024 from https:\/\/iceberg.apache.org\/spec\/#partition-transforms"},{"volume-title":"Apache Iceberg System Function Pushdown Fix. Retrieved","year":"2024","key":"e_1_2_1_23_1","unstructured":"2024. Apache Iceberg System Function Pushdown Fix. Retrieved June 7, 2024 from https:\/\/github.com\/apache\/iceberg\/pull\/9873"},{"volume-title":"Apache Impala Runtime Filtering. Retrieved","year":"2024","key":"e_1_2_1_24_1","unstructured":"2024. Apache Impala Runtime Filtering. Retrieved June 7, 2024 from https:\/\/docs.cloudera.com\/runtime\/latest\/impala-reference\/topics\/impala-runtime-filtering.html"},{"volume-title":"Retrieved","year":"2024","key":"e_1_2_1_25_1","unstructured":"2024. Cloudera Row-Level Operations. Retrieved July 16, 2024 from https:\/\/docs.cloudera.com\/cdw-runtime\/cloud\/iceberg-how-to\/topics\/iceberg-row-level-ops.html"},{"volume-title":"Delta Lake Low Shuffle MERGE on Databricks. Retrieved","year":"2024","key":"e_1_2_1_26_1","unstructured":"2024. Delta Lake Low Shuffle MERGE on Databricks. Retrieved June 9, 2024 from https:\/\/docs.databricks.com\/en\/optimizations\/low-shuffle-merge.html"},{"key":"e_1_2_1_27_1","unstructured":"2024. Snowflake Micro-Partitions. Retrieved June 11 2024 from https:\/\/docs.snowflake.com\/en\/user-guide\/tables-clustering-micropartitions"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2845915"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385658.3385668"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","unstructured":"Daniel Abadi Peter Boncz Stavros Harizopoulos Stratos Idreaos and Samuel Madden. 2013. 10.1561\/1900000024","DOI":"10.1561\/1900000024"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.14778\/3415478.3415560"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2742797"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/568271.223785"},{"key":"e_1_2_1_34_1","volume-title":"Conference on Innovative Data Systems Research. https:\/\/api.semanticscholar.org\/CorpusID:1379707","author":"Boncz Peter A.","year":"2005","unstructured":"Peter A. Boncz, Marcin Zukowski, and Niels Nes. 2005. MonetDB\/X100: Hyper-Pipelining Query Execution. In Conference on Innovative Data Systems Research. https:\/\/api.semanticscholar.org\/CorpusID:1379707"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1620585.1620587"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3299869.3314045"},{"key":"e_1_2_1_37_1","volume-title":"Carlo Curino, and Raghu Ramakrishnan","author":"Camacho-Rodr\u00edguez Jes\u00fas","year":"2023","unstructured":"Jes\u00fas Camacho-Rodr\u00edguez, Ashvin Agrawal, Anja Gruenheid, Ashit Gosalia, Cristian Petculescu, Josep Aguilar-Saborit, Avrilia Floratou, Carlo Curino, and Raghu Ramakrishnan. 2023. LST-Bench: Benchmarking Log-Structured Tables in the Cloud. arXiv preprint arXiv:2305.01120 (2023). https:\/\/arxiv.org\/abs\/2305.01120"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.2325"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2903742"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2903741"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1327452.1327492"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.14778\/1920841.1920908"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/3476311.3476385"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.14778\/2002938.2002943"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03730-6_10"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2742795"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807167.1807227"},{"key":"e_1_2_1_49_1","volume-title":"Tathagata Das, Ion Stoica, and Matei A. Zaharia.","author":"Jain Paras","year":"2023","unstructured":"Paras Jain, Peter Kraft, Conor Power, Tathagata Das, Ion Stoica, and Matei A. Zaharia. 2023. Analyzing and Comparing Lakehouse Storage Systems. In Conference on Innovative Data Systems Research. https:\/\/api.semanticscholar.org\/CorpusID:259267242"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.14778\/3415478.3415568"},{"key":"e_1_2_1_51_1","volume-title":"Proceedings of the 24rd International Conference on Very Large Data Bases (VLDB '98)","author":"Moerkotte Guido","year":"1998","unstructured":"Guido Moerkotte. 1998. Small Materialized Aggregates: A Light Weight Index Structure for Data Warehousing. In Proceedings of the 24rd International Conference on Very Large Data Bases (VLDB '98). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 476--487."},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1007\/s002360050048"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/320473.320484"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.14778\/3415478.3415558"},{"key":"e_1_2_1_55_1","volume-title":"Proceedings of the 31st International Conference on Very Large Data Bases","author":"Stonebraker Mike","year":"2005","unstructured":"Mike Stonebraker, Daniel J. Abadi, Adam Batkin, Xuedong Chen, Mitch Cherniack, Miguel Ferreira, Edmond Lau, Amerson Lin, Sam Madden, Elizabeth O'Neil, Pat O'Neil, Alex Rasin, Nga Tran, and Stan Zdonik. 2005. C-store: a column-oriented DBMS. In Proceedings of the 31st International Conference on Very Large Data Bases (Trondheim, Norway) (VLDB '05). VLDB Endowment, 553--564."},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2010.5447738"},{"key":"e_1_2_1_57_1","volume-title":"Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation","author":"Zaharia Matei","year":"2012","unstructured":"Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael J. Franklin, Scott Shenker, and Ion Stoica. 2012. Resilient distributed datasets: a fault-tolerant abstraction for in-memory cluster computing. In Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation (San Jose, CA) (NSDI'12). USENIX Association, USA, 2."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2934664"},{"key":"e_1_2_1_59_1","volume-title":"Conference on Innovative Data Systems Research. https:\/\/api.semanticscholar.org\/CorpusID:229576171","author":"Zaharia Matei A.","year":"2021","unstructured":"Matei A. Zaharia, Ali Ghodsi, Reynold Xin, and Michael Armbrust. 2021. Lake-house: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics. In Conference on Innovative Data Systems Research. https:\/\/api.semanticscholar.org\/CorpusID:229576171"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2006.150"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3685800.3685834","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,12,31]],"date-time":"2024-12-31T05:30:34Z","timestamp":1735623034000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3685800.3685834"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,8]]},"references-count":59,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2024,8]]}},"alternative-id":["10.14778\/3685800.3685834"],"URL":"https:\/\/doi.org\/10.14778\/3685800.3685834","relation":{},"ISSN":["2150-8097"],"issn-type":[{"type":"print","value":"2150-8097"}],"subject":[],"published":{"date-parts":[[2024,8]]},"assertion":[{"value":"2024-11-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}