10个Kettle(Pentaho Data Integration)基础概念面试题及答案
1. 什么是Kettle?
答案:
Kettle(现称Pentaho Data Integration,PDI)是一款开源的ETL(Extract, Transform, Load)工具,用于数据集成和数据迁移。它提供了可视化的界面,允许用户通过拖拽组件的方式设计数据流程,支持从多种数据源抽取数据、进行数据转换,并将数据加载到目标系统中。
2. Kettle的两大核心组件是什么?
答案:
Kettle的两大核心组件是:
- 转换(Transformation):用于定义数据流的处理逻辑,由多个步骤(Step)和跳(Hop)组成。
- 作业(Job):用于协调多个转换或任务的执行顺序,支持条件判断、循环和调度。
3. 转换(Transformation)和作业(Job)的区别是什么?
答案:
对比项 | 转换 | 作业 |
---|---|---|
功能 | 数据处理 | 任务调度与流程控制 |
组成 | 步骤(Step)和跳(Hop) | 作业项(Job Entry) |
执行方式 | 并行处理 | 串行执行 |
适用场景 | 数据清洗、转换 | 任务编排、调度 |
4. 什么是步骤(Step)和跳(Hop)?
答案:
- 步骤(Step):转换中的基本操作单元,用于执行特定的数据处理任务,如读取数据、过滤数据、写入数据等。
- 跳(Hop):连接步骤的箭头,用于定义数据流的走向。跳可以配置条件,决定数据是否流向下一个步骤。
5. Kettle支持的常见数据源有哪些?
答案:
Kettle支持多种数据源,包括但不限于:
- 关系型数据库(如MySQL、Oracle、PostgreSQL)
- 文件(如CSV、Excel、XML、JSON)
- NoSQL数据库(如MongoDB、HBase)
- 大数据平台(如Hadoop、Hive)
- Web服务(如REST API、SOAP)
6. 什么是Kettle的“主对象树”?
答案:
"主对象树"是Kettle中用于管理共享资源的区域,包括:
- 数据库连接:全局共享的数据库连接配置。
- 变量:全局或局部变量,用于动态传递参数。
- 集群模式配置:分布式执行的配置信息。
通过主对象树,可以在多个转换或作业中复用资源。
7. 如何在Kettle中实现增量数据加载?
答案:
增量数据加载的常见方法包括:
-
时间戳法:记录最后更新时间,只加载新增或修改的数据。
SELECT * FROM table WHERE update_time > '${LAST_UPDATE}'
-
日志法:利用数据库日志(如MySQL binlog)捕获变更。
-
增量表法:通过对比源表和目标表的差异数据。
8. Kettle中的“变量”是什么?如何使用?
答案:
-
变量:用于动态传递参数的占位符,格式为${变量名}。
-
使用场景:
-
在SQL查询中动态传递条件值。
-
在文件路径中动态指定目录。
-
-
设置方式:
-
通过“设置变量(Set Variables)”步骤设置。
-
在作业或转换启动时通过参数传递。
-
9. 如何调试Kettle转换?
答案:
调试Kettle转换的常用方法包括:
-
数据预览:在步骤上右键选择“预览”,查看数据流。
-
写日志:使用“写日志(Write to Log)”步骤输出调试信息。
-
断点调试:在步骤上设置断点,逐步执行转换。
-
错误处理:配置错误跳转,捕获并记录异常数据。
10. Kettle如何实现数据去重?
答案:
数据去重的常见方法包括:
-
唯一行(Unique Rows)步骤:去除完全重复的行。
-
排序行(Sort Rows)+ 分组(Group by)步骤:按指定字段去重。
-
数据库DISTINCT关键字:在SQL查询中使用DISTINCT去重。
-
哈希值比对:通过“计算器(Calculator)”步骤生成哈希值,比对去重。