ARTICLE DETAIL

资讯详情

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

Delta Lake 快速上手指南:让数据湖支持事务与时间旅行

Delta Lake 快速上手指南:让数据湖支持事务与时间旅行 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数据湖用久了常见三个问题微批写入攒下一堆小文件查询变慢多个作业并发写同一张表读到的数据可能是半成品的想更新或合并已有数据只能整表重算又贵又慢。Delta Lake 是 Databricks 开源的存储框架它不改你现有的 HDFS、S3、GCS 存储只在数据上叠一层事务日志就补齐了数据仓库的可靠性。核心能力有四个ACID 事务并发读写时数据始终一致、时间旅行按版本号回查历史数据、小文件自动优化以及 merge/update/delete 这类仓库式的数据修改能力。3 分钟装好 Delta Lake 并写入第一张表前提是本机有 Java 8 以上和 PySpark。最简单的方式是 pip 装pip install delta-spark装完在 Spark 会话里开两个配置就能开始读写 Delta 表spark (SparkSession.builder .config(spark.sql.extensions, io.delta.sql.DeltaSparkSessionExtension) .config(spark.sql.catalog.spark_catalog, org.apache.spark.sql.delta.catalog.DeltaCatalog) .getOrCreate()) data spark.createDataFrame([(1, Alice), (2, Bob)], [id, name]) data.write.format(delta).save(/tmp/delta-table)第一行代码开启 Delta 的 SQL 扩展后面几行建表并写入两条记录。运行后本地会生成/tmp/delta-table目录多出来的.delta子目录就是事务日志。仓库里现成的完整示例可以直接照着跑examples/python/quickstart.py想从源码构建的话克隆仓库git clone https://gitcode.com/GitHub_Trending/del/delta后按 docs/src/content/docs/quick-start.mdx 的说明执行即可。事务日志与时间旅行数据坏了能回滚每次写入都会在.delta目录追加一段日志记录这次动了哪些文件。这套机制帮你省了两件事不用担心读到脏数据。多个作业并发写同一张表时读者看到的要么是写入前、要么是写入后的完整版本不会出现读到一半的状态。历史数据随时可查。用spark.read.format(delta).option(versionAsOf, 1).load(path)就能回到任意历史版本审计和复现实验不再靠备份文件。表对象还暴露了merge、update、delete操作。遇到用一批新数据覆盖匹配行、没匹配到的追加这类需求时用一次merge就搞定不用再整表重算。小文件太多时用 OPTIMIZE 合并文件流式写入攒出几千个小文件时查询会慢得离谱。Delta Lake 的OPTIMIZE命令可以把小文件合并成大文件也可以配置自动优化让它在后台持续进行。下面的图对比了两种写入方式左边多个执行器各自写出一堆小文件右边优化写入把同分区的数据合并成少量大文件这正是查询提速的关键。另外Delta Kernel 是一个独立的读取引擎Spark、Flink 等计算引擎通过它读表不必各自维护一套协议实现。下图展示了 Spark Driver 经 Delta Kernel Connector 把 schema 请求和过滤条件传给 KernelKernel 解析日志后返回要扫描的文件列表。3 个典型落地场景与适用人群已有数据湖的团队Delta Lake 直接加在现有数据上就能转成 Delta 表不用搬数据。流式处理团队同一张表既能做批查询也能当流式数据源和目标支持精确一次处理和历史回补一套表两种用法。多引擎协作的企业Spark、Flink、Trino、Hive 都有官方连接器批处理在 Spark 写、分析查询在 Trino 读互不干扰。如果你是新手建议的路径先把 quickstart 跑通再依次看 docs/src/content/docs/index.md 里的 Time Travel、Merge、Optimize 小节想读源码的话核心实现在 spark/src/main/scala/org/apache/spark/sql/delta/ 目录从DeltaLog读起事务机制就一目了然。【免费下载链接】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),仅供参考
返回列表