ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

10分钟跑通Delta Lake湖仓一体:从安装到时间旅行查询的完整指南

10分钟跑通Delta Lake湖仓一体:从安装到时间旅行查询的完整指南 10分钟跑通Delta Lake湖仓一体从安装到时间旅行查询的完整指南【免费下载链接】deltaAn open-source storage framework that enables building a Lakehouse architecture with compute engines including Spark, PrestoDB, Flink, Trino, and Hive and APIs项目地址: https://gitcode.com/GitHub_Trending/del/delta痛点Parquet目录直接当表用的麻烦用Spark往一个Parquet目录里批量写数据时你有过这些经历吗并发写的时候读端能看到写了一半的数据每天追加写小文件越攒越多查询越来越慢误操作执行了一次overwrite前一天的版本找不回来了。Delta Lake就是为解决这些问题而生的开源存储框架它在数据湖之上加了一层ACID事务日志让Spark、Flink、Trino等引擎读写同一张表时保持一致、可回溯、可更新删除。一图看懂读请求怎么拿到一致的数据Delta表的每次写入都会在事务日志里追加一个快照一组文件清单读端只认某一个版本的快照所以永远不会看到半写状态。图中的Spark Driver负责发起请求和拿到结果Delta Kernel Connector负责把schema请求和过滤条件下推Delta Kernel负责解析事务日志、返回一份一致的待扫描文件列表最后仍由Spark自己的Parquet reader读数据文件。三步跑通第1步环境要求Java 8 / 11 / 17 任一配置好JAVA_HOMESparkScala或PySpark版本需与Delta Lake 4.0.0兼容可选把仓库克隆下来对照示例跑git clone https://gitcode.com/GitHub_Trending/del/delta第2步启动带Delta Lake的Spark shellpyspark --packages io.delta:delta-spark_2.13:4.0.0 \ --conf spark.sql.extensionsio.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalogorg.apache.spark.sql.delta.catalog.DeltaCatalog关键就是这两个conf前者注册Delta的SQL扩展支持MERGE/UPDATE/DELETE后者替换默认catalog让CREATE TABLE ... USING DELTA生效。第3步最小示例创建、查询、回滚第一张表df spark.range(5).write.format(delta).save(/tmp/delta-table) print(spark.read.format(delta).load(/tmp/delta-table)) # 时间旅行读回第0个版本 print(spark.read.format(delta).option(versionAsOf, 0).load(/tmp/delta-table))写完立刻能读versionAsOf能读任意历史版本。仓库里 examples/python/quickstart.py 就是这个例子的完整版含merge、update、delete建议逐段跑一遍。进阶特性优化写入合并小文件原理一句话写入时先shuffle再落盘让每个分区只产出少量大文件而不是一堆碎片。左图传统写入每个executor都往每个分区撒小文件右图优化写入数据先按分区重分布每个分区只剩少数文件。日常用OPTIMIZE 表名语句即可触发小文件合并配合自动压缩策略还能顺便做z-order聚簇。流式读写初始快照不丢乱序数据原理一句话Delta表天然就是流式源首次读会拉取一个初始快照开启事件时间排序后乱序数据不再被丢弃。对照图中三行第一行是初始快照的三个文件第二行禁用事件时间排序时迟到的记录2被当作late event丢弃红色格第三行启用排序后它被归入正确的批次处理。做CDC或日志入湖时这个选项直接决定数据完整性。时间旅行与行级更新每次commit都有版本号出问题可以整体回滚到任一历史版本支持Merge/Update/Delete语句upsert不用再靠全量overwrite或写临时表绕圈。适用场景与落地建议数据仓库替换Hive/Parquet表多引擎Spark、Trino、Flink、Athena读写同一张表且结果一致实时入湖流式写Delta消费端流式读变更事件时间排序兜底乱序可复现实验ML训练数据按版本固化实验可以精确复现当时的数据状态审计与回滚事务日志天然保留全量历史误操作按版本回退即可下一步建议先读一遍 docs/src/content/docs/quick-start.mdx 的完整快速开始再照着 examples/python/quickstart.py 把读写、merge、时间旅行全部跑通想理解实现细节从 spark/src/main/scala/io/delta/ 目录读起。现在就打开shell把第一张Delta表建起来吧。【免费下载链接】deltaAn open-source storage framework that enables building a Lakehouse architecture with compute engines including Spark, PrestoDB, Flink, Trino, and Hive and APIs项目地址: https://gitcode.com/GitHub_Trending/del/delta创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表