前 言
2017年我写了第一本书,名为《Hadoop构建数据仓库实践》。那本书详细地介绍了如何利用Hadoop生态圈组件构建传统数据仓库,如使用Sqoop从关系型数据库全量或增量抽取数据到Hadoop系统、使用Hive进行数据转换和装载处理、使用Oozie调度ETL过程自动定时执行等。作为进阶,书中还讲解了多维数据仓库技术中的渐变维、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到事实、累计度量等常见问题在Hadoop上的处理方法。所有这些内容都以CDH(Cloudera's Distribution Including Apache Hadoop)为运行平台,并用一个简单的销售订单示例来系统说明。
该书介绍的大部分功能都是通过Hive SQL来实现的,其中有些SQL语句逻辑复杂,可读性也不是很好。如今四年过去了,技术已经有了新的发展,同时我对Hadoop数据仓库这个主题也有了新的思考,那就是有没有可能使用一种GUI(Graphical User Interface,图形用户界面)工具来实现上述所有功能呢?伴随着寻找答案的过程,经过持续的实践与总结,于是就有了呈现在读者面前的这本新书。本书介绍并演示如何用Kettle完成Hadoop数据仓库的ETL过程。我们仍然以CDH作为Hadoop平台,沿用相同的销售订单示例进行说明,因此可以将本书当作《Hadoop构建数据仓库实践》的另一版本。
面对各种各样的ETL开发工具,之所以选择Kettle,主要由于它的一些鲜明特性。首先,很明确的一点是,作为一款GUI工具,Kettle的易用性好,编码工作量最小化。几乎所有的功能都可以通过用户界面完成,提高了ETL过程的开发效率。其次,Kettle的功能完备。书中演示所用的Kettle 8.3版本几乎支持所有常见的数据源,并能满足ETL功能需求的各种转换步骤与作业项。第三,Kettle是基于Java的解决方案,天然继承了Java的跨平台性,只要有合适的JVM存在,转换或作业就能运行在任何环境和平台之上,真正做到与平台无关。最后,Kettle允许多线程与并发执行,以提高程序执行效率。用户只需指定线程数,其他工作都交给Kettle处理,实现细节完全透明化。
本书内容
全书共分10章。第1章介绍ETL与Kettle的基本概念,如ETL定义、ETL工具、Kettle的设计原则、Kettle组件与功能特性等。第2章讲解Kettle在Linux上的安装配置,还包括安装Java环境、安装GNOME Desktop图形界面、配置中文字符集和输入法、安装配置VNC远程控制等相关细节问题。第3章介绍Kettle对Hadoop的支持,说明如何配置Kettle连接Hadoop集群、Kettle中包含的Hadoop相关的步骤与作业项,演示Kettle导入导出Hadoop数据、执行MapReduce和Spark作业等。第4章说明贯穿全书的销售订单示例的搭建过程。第5章主要讲解用Kettle实现各种变换数据捕获方法,还有Sqoop作业项的使用。第6章说明Kettle的数据转换与装载功能,以及在销售订单示例上的具体实现。第7章讲解Kettle如何支持ETL作业的自动调度,包括使用Oozie和Start作业项的实现。第8、9章详解多维数据仓库中常见的维度表和事实表技术,及其Kettle实现。第10章介绍三种与Kettle可扩展性相关的技术,即并行、集群和分区。
资源下载与技术支持
本书配套的资源下载信息,请用微信扫描右边的二维码获取,可按页面提示,把下载链接转发到自己的邮箱中下载。如果阅读过程中发现问题,请联系booksaga@163.com,邮件主题为“Kettle构建Hadoop ETL系统实践”。
读者对象
本书所有的描绘场景与实验环境都是基于Linux操作系统的虚拟机,需要读者具有一定的Hadoop、数据仓库、SQL与Linux基础。本书适合大数据分析系统开发、数据仓库系统设计与开发、DBA、架构师等相关技术人员阅读,也适合高等院校和培训机构人工智能与大数据相关专业的师生教学参考。
致谢
在本书编写过程中,得到了很多人的帮助与支持。首先要感谢我所在的公司(优贝在线)提供的平台和环境,感谢同事们工作中的鼎力相助。没有那里的环境和团队,也就不会有这本书。感谢清华大学出版社图格事业部的编辑们,他们的辛勤工作使得本书得以尽早与读者见面。感谢CSDN提供的技术分享平台,给我有一个将博客文章整理成书的机会。最后,感谢家人对我一如既往的支持。由于本人水平有限,书中疏漏之处在所难免,敬请读者批评指正。
著 者
2021年5月