Delta lake with Java--读《Delta Lake Up and Running》总结

2024-05-05 21:52
文章标签 java 总结 running lake delta

本文主要是介绍Delta lake with Java--读《Delta Lake Up and Running》总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用5.1假期读完《Delta Lake Up and Running》,这本书非常适合入门,但不够深入,要想将Delta lake用于实际项目,还是需要从spark开始重新学习。学完一本书总结一下这本书的内容。

第一章 概念介绍,其中第21页的Medallio Architecture架构(金,银,铜)是数据湖架构基础,基本上数据湖的书籍都会提及。

第二章 Delta lake入门,需要掌握如何创建sparksession,如何用sparksession实现数据读写,其实使用的就是spark dataframe api,只是格式要设定为delta,深入一点可以看一下这章后面关于delta lake文件的说明。

第三章 Delta lake最基本操作,包括建库,建表,描述表结构,插入数据,查询数据,可以通过3种方式实现,分别是spark sql+sql语句,spark dataframe api,deltatable api,个人觉得用sql语句比较简单。

第四章 Delta lake最基本的数据操作,包括删除,更新,merges,个人理解只能通过sql语句和deltatable api来实现,其中merges比较复杂。

第五章 性能调优,调优的方法有:分区,压缩文件,zorder by, liquid clustering。其中分区觉得比较有效,liquid clustering还是实验阶段,压缩文件,zorder by需要定时触发而且每次触发都会耗时,实际应用应该写一个后台任务在没有任何操作的时候来自动触发。

第六章 时间旅行,主要是利用Delta lake能保存数据版本这一特点来实现。另外Delta lake 不会清除历史版本,需要定时运行VACUUM命令来清理。最后捕捉行记录的变化。以上操作均可以通过sql语句实现。

第七章 表结构变化处理,主要是两类处理,一类是固定结构,遇到不一致的就报错。另外一个类就是结构可以根据数据变化,要实现结构自动变化主要在数据写入的时候,设置option("mergeSchema",true)。

第八章 如何使用流实现数据同步,书中只实现了插入数据同步,没有实现更新数据同步,但官网文档上有说明,目前删除数据好像是无法通过流实现同步。

第九章 Delta lake数据分享,这章比较简单,介绍了一些直接读取delta lake文件的方法,还不如官方文档详细。

第十章 给出了一个完整的数据湖架构,后面如果真的能用于生产可以参考。

读完了整本书,有两个感觉:

1、还是要深入学习一下spark,为了后面能兼容AI,还是从pyspark入手,后面计划学习一下pyspark,然后再看看pyspark如何与pytorch等深度学习架构融合。

2、学习技术只是入门,具体还要以项目来验证,因为只有通过项目才能挖掘出一下书本没有说的情况,所以还是要结合实际,希望后面能把Delta lake用于实际项目,我始终相信机会总是留给有准备的人。

最后把最近几天写的代码公开,欢迎高手指教,谢谢。
kengan1013/Detla-lake-with-java

这篇关于Delta lake with Java--读《Delta Lake Up and Running》总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962770

相关文章

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中