网站运营的案例,东莞市品牌网站建设平台,淘宝网官网登录,深圳市龙华区邮编在数据集成和数据仓库建设中#xff0c;ETL#xff08;Extract, Transform, Load#xff09;工具扮演着至关重要的角色。本文将对六种主流ETL工具进行比较#xff0c;并深入探讨Kettle的实践应用。
一、六种主流ETL工具比较
1. DataPipeline
设计及架构#xff1a;专为… 在数据集成和数据仓库建设中ETLExtract, Transform, Load工具扮演着至关重要的角色。本文将对六种主流ETL工具进行比较并深入探讨Kettle的实践应用。
一、六种主流ETL工具比较
1. DataPipeline
设计及架构专为超大数据量、高度复杂的数据链路设计的灵活、可扩展的数据交换平台。使用方式全流程图形化界面Cloud Native架构所有操作在浏览器内完成无需额外开发。底层架构分布式集群高可用架构自动调节任务在节点间分配适用于大数据场景。
2. Kettle
设计及架构面向数据仓库建模的传统ETL工具。使用方式C/S客户端模式开发和生产环境需要独立部署任务编写、调试、修改都在本地。底层架构主从结构非高可用扩展性差不适用大数据场景。
3. Oracle Goldengate
设计及架构主要用于数据备份、容灾。使用方式没有图形化界面操作皆为命令行方式可配置能力差。底层架构可做集群部署依赖于外部环境如Oracle RAC等。
4. Informatica
设计及架构面向数据仓库建模的传统ETL工具。使用方式C/S客户端模式学习成本较高一般需要受过专业培训的工程师才能使用。
5. Talend
设计及架构面向数据仓库建模的传统ETL工具。使用方式C/S客户端模式开发和生产环境需要独立部署。
6. DataX
设计及架构面向数据仓库建模的传统ETL工具。使用方式DataX是以脚本的方式执行任务的需要完全吃透源码才可以调用。
二、Kettle实践指njie
1. MySQL到MySQL数据迁移
任务描述将一个表中的数据t_user导入到另一个表中t_user2。
操作步骤
选择“表输入”步骤连接MySQL数据库选择t_user表。 选择“表输出”步骤连接MySQL数据库选择t_user2表。 确保字段映射正确执行转换。 2. 根据条件导出到不同的Excel
任务描述根据字段值导出到不同的Excel文件。
操作步骤
使用“选择”步骤根据字段值进行条件筛选。 第一个Excel输出 选择 带有 defalut的字样的第二个Excel中选择带有 new 字样的选项。 使用“写入Excel文件”步骤将筛选后的数据写入不同的Excel文件。 3. 执行SQL脚本
任务描述使用Kettle执行SQL脚本如truncate table t_user2。
操作步骤
使用“SQL执行”步骤输入SQL脚本并执行。 sql语句
truncate table t_user2 4. Hive数据导出到MySQL
任务描述将Hive的数据导出到MySQL。
操作步骤
使用“表输入”步骤连接Hive数据库。 报错 配置如下 如何找到hive-jdbc的jar包 使用“表输出”步骤连接MySQL数据库。 当预览hive中的数据失败时 在hive中的字段名字要和数据库的字段名字一样不能在建数据库的时候修改列的名字否则不照样会失败建表语句中varchar类型后面记得添加长度。
5. MySQL数据导入Hive
任务描述将MySQL的数据导入Hive。
操作步骤
使用“表输入”步骤连接MySQL数据库。按上文操作
使用“表输出”步骤连接Hive数据库。按上文操作
输入是 表输入使用 mysql ,输出是表输出使用 hive
如果直接做报错
2024/09/11 17:19:29 - 表输出.0 - Caused by: org.pentaho.di.core.exception.KettleDatabaseException:
2024/09/11 17:19:29 - 表输出.0 - Error setting value #9 [Date] on prepared statement
2024/09/11 17:19:29 - 表输出.0 - Method not supported
2024/09/11 17:19:29 - 表输出.0 -
2024/09/11 17:19:29 - 表输出.0 - at org.pentaho.di.core.row.value.ValueMetaBase.setPreparedStatementValue(ValueMetaBase.java:5477)
2024/09/11 17:19:29 - 表输出.0 - at org.pentaho.di.core.database.Database.setValue(Database.java:1080)
2024/09/11 17:19:29 - 表输出.0 - at org.pentaho.di.core.database.Database.setValues(Database.java:1096)
2024/09/11 17:19:29 - 表输出.0 - ... 4 more
2024/09/11 17:19:29 - 表输出.0 - Caused by: java.sql.SQLFeatureNotSupportedException: Method not supported
2024/09/11 17:19:29 - 表输出.0 - at org.apache.hive.jdbc.HivePreparedStatement.setDate(HivePreparedStatement.java:460)
2024/09/11 17:19:29 - 表输出.0 - at org.pentaho.di.core.row.value.ValueMetaBase.setPreparedStatementValue(ValueMetaBase.java:5412)
2024/09/11 17:19:29 - 表输出.0 - ... 6 more
通过查看错误发现是 Date 类型的错误所以修改表输入中的 SQL 语句
SELECTid
, name
, age
, gender
, province
, city
, region
, phone
, date_format(birthday,%Y-%m-%d) birthday
, hobby
, date_format(register_date,%Y-%m-%d %h:%i:%s) register_date
FROM kettle_demo.t_user问题解决 有时候运行成功有时候只能导入 2 条数据然后报错可以在 hive 的 conf 下的 .hiverc 下添加如下
set hive.stats.column.autogatherfalse; 然后不需要重启 hiveserver2 以及 kettle直接运行即可。
如果还不行直接修改 hive-site.xml 把里面的true改为false 重启hive和kettle 。
6. 将MySQL数据导入HDFS
任务描述将MySQL的数据导入HDFS。
操作步骤
使用“表输入”步骤连接MySQL数据库。按上文操作
使用“Hadoop文件输出”步骤配置HDFS路径和权限。 重启 kettle进入之后 查看报告 假如你使用了 hdfs 自带的文件夹比如/home会报没有权限的错误 报错内容 2024/09/12 09:48:08 - Hadoop file output.0 - Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: userAdministrator, accessWRITE, inode/home:root:supergroup:drwxr-xr-xat org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:504)at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:336)at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:242)at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1939)at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1923)at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1882)
解决办法修改 hdfs 中的文件夹的权限
hdfs dfs -chmod -R 777 /home
假如你使用的是一个全新的路径是不会报权限错误的。 7. Job任务
任务描述使用Kettle的Job功能进行任务编排。
操作步骤
在新建中选择【作业】即可进入作业编辑界面
根据需求添加相应的步骤和转换。 Start 如果不想定时执行什么都可以不用设置
完成 什么都不用设置 复杂的job 图表展示有点类似于我们之前的任务编排编排的是转换。 如果出现如下问题 在job 这个任务保存的时候不要保存在中文路径下。保存在非中文路径下。其他ETL工具
三、总结 ETL工具的选择应根据项目需求、数据量、易用性、稳定性等因素综合考虑。Kettle作为一款开源的ETL工具具有强大的数据处理能力和灵活的配置选项适合各种规模的数据集成任务。通过本文的实践指南希望能帮助大家更好地理解和使用Kettle。
参考链接
六种主流ETL工具的比较闫哥大数据--73-kettle的介绍和安装_哔哩哔哩_bilibili