kettle 从数据库表将数据写入 hadoop hdfs

时间:2024-10-23 08:21:24

kettle 作为一个 java 的开源 ETL 工具,支持的接入源与输出源很丰富,

下面测试简单的 数据库 table -> table -> hdfs 文件的写入。

简介:kettle 主目录分为作业和转换

    转换: 用来配置ETL 链路信息,及工作方式。

    作业: 用来启动和控制转换工作。

1. 安装环境

    kettle 依赖于 java 环境,请安装好 Java ,并设置好 jdk 环境变量


2. 安装 kettle 

    下载地址:/projects/data-integration/

    下载速度有点慢,有条件者可以使用 vpn

    下载完成,解压,双击 打开kettle


3. 双击转换新建一个转换任务。 

    

4. 源端选择 打开输入-> 表输入,将表输入拖到右边工作台上



5. 双击表输入,输入源端数据库基本信息

    

此时可以看出提示驱动找不到,下载 mysql 驱动包,放入 lib 目录下,重启 kettle


6. 测试数据库连接成功

    


7. 输入源端数据查询语句,配置完成



8. 点击 输出 -> 插入/更新 ,拖放到右端工作台上,并与目标端连接

    用鼠标中建连接源端与目标端,或者选中源端,按 shift 将源端指向目标端



9. 双击输入目标端数据库信息



9. 配置装载规则,点击确认,数据库装载配置完成



10. 点击 big data -> Hadoop File output,将此拖放到右边工作台,并连接



11. 双击 hadoop file output,添加 hadoop 集群配置

  输入集群信息,点击测试



12. 此时会弹出 hadoop 版本的基本信息,记下此信息,之后会用到



13. 此时可能你会遇到错误

    The Active Shim has not been set.



14. 打开plugins\pentaho-big-data-plugin\ 文件

    修改  为 =cdh58

    红字部分,就是我们上面记录的版本信息,保存现有配置,重启kettle


15. 此时再次测试 hadoop 配置,发现大多数都已通过,但是有一个警告

    The Hadoop File System URL does not match the URL in the shims .


16. 复制集群中的 ,

    将该 xml 文件复制到 plugins\pentaho-big-data-plugin\hadoop-configurations\cdh58,

    替换原有

    重启 kettle ,此时发现警告依旧。



17. 不用担心,现在警告的原因是因为 配置的 url 与 xml 配置文件里面的 url 不一样,

    xml 里面用的 hostname 连接的,而我们配置的时候用的 ip,

    将 ip 改为 hostname ,测试通过

    注意,用 hostname 时,本地需要 添加 hosts 配置。



18. 配置 hdfs 路径信息

   


19. 输入输出文件名,点击确定,配置完成

    


20. 点击文件->新建->作业,配置 start,和转换

 

    

21. start 基本不需要配置,双击转换

    选择我们之前保存的转换文件,点击确定,配置完成



22. 点击 run ,启动 job




23. 执行成功



2.4 查看写入情况

    


至此,配置成功

kettle 中还有很多其他功能的组件,使用时只需根据需求,配置不同功能组件即可