企业级增量抽取数据模型

最近在使用Kettle进行ETL的工作,现在总结一下。需求是将MYSQL中的表数据增量备份到HIVE仓库中,第一次是全量。我只想给大伙来点实用的,避免大家踩坑。Kettle是一个基于图形化的ETL工具,也可以用于集成各种作业,比如Sqoop,MR,Hive这些,越来越多的企业在使用。

本文大纲:

1、Kettle的安装与配置

2、库表数据的准备

3、Kettle增量抽取数据模型

4、测试与验证

5、部署到Linux上运行

6、总结

1、Kettle的安装与配置

1.1下载安装包,解压

到Kettle官网下载:https://community.hitachivantara.com/docs/DOC-1009855,目前最新的是8.0版本。(pdi-ce-8.0.0.0-28.zip),下载后解压到任意目录。注意与自己的JDK搭配上,我的JDK是1.8。如果你的是1.7,则下载Kettle的7.0版本。

1.2配置环境变量

配置Kettle的工作目录,即KETTLE_HOME,指向自己解压后的目录。

1.3修改Kettle的配置文件

配置完环境变量后,进入Kettle的主目录,点击Spoon.bat,即可启动。同时你在主目录下会发现多了一个.kettle目录,里面有kettle.properties文件。

请将下面的内容修改为你自己的相应环境,然后拷贝到kettle.properties文件里。主要用于后面的增量数据抽取模型。

第一部分:数据仓库路径,你得在集群中安装好Hive。

第二部分:Hadoop集群的配置,你得安装一个Hadoop集群。

第三部分:我们的数据源,我们需要抽取哪个库的数据。

第四部分:我们抽取数据需要写一些Log,将Log存储到数据库中。

第五部分:kettle转换和作业的存放地址。

1.4添加Hadoop的配置文件到Kettle大数据插件中

将Hadoop集群中的hdfs-site.xml和core-site.xml文件拷贝到$\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh512目录下。

1.5将MYSQL的驱动包拷贝到Kettlelib目录下

$\lib。

2、库表数据的准备

2.1数据源数据

创建一个待抽取数据的数据库和表。数据库请按照自己在Kettle配置文件所配置的进行创建,在执行下面的创表脚本。

添加一些测试数据。

2.2 Log日志表

我们需要将抽取数据的Log记录到数据库中。数据库请按照自己在Kettle配置文件所配置的进行创建,在执行下面的创表脚本。

2.3 Hive表

创建Hive表,先创建一个名为rds的数据库,在建表。该表的字段与数据源的表类似,在此添加了一个数据加载时间,是为了区分记录。

3、Kettle增量抽取数据模型

下面的这些作业和转换请保持在kettle配置文件中指定的路径下。

3.1设置作业变量

3.1.1获取上次抽取记录数

是为了判断是否是第一次抽取,若是第一次则全量抽取,否则增量抽取。

点击编辑,$是读取kettle配置文件中的变量值。

设置环境变量

3.1.2获取上次抽取时间

是为了实现增量抽取,从上次抽取结束时间到当前时间为增量数据。

设置上次数据抽取时间到变量中。

3.1.3获取系统当前时间

是为了增量抽取数据,取得当前的时间。

设置当前时间

3.2抽取数据保存到Hive

3.2.1抽取mysql数据中的数据

抽取MYSQL数据源中的数据,使用is_load判断是否是第一次抽取,否则增量抽取。按照数据表数据更新时间进行过滤。is_load,before_time,curr_time都是前面设置的变量。

点击编辑,配置数据源。

3.2.2动态生成文件名

这个文件名需要动态生成,因为不同的数据表保存到Hive的路径是不同的,Hive中表的数据是会根据表名创建一个目录,我们将数据保存到该目录下,就可以使用Hive SQL查询了,无需格外在进行一次load data导入。

注意:但这不是内部表,是外部表,只不过我们把数据放在而已。

3.2.3获取数据仓库路径

这个路径是我们在kettle配置文件中配置的。

3.2.4 生成数据入库时间

为每条数据增加一个字段,数据入库时间,即数据加载的时间。

3.2.5 生成数据仓库最终保存路径

将数据仓库路径加上文件名就是一个完整的HDFS路径。

3.2.6 保存数据到Hive

这里我们选择从字段中获取文件名,因为文件名是动态的,不能写死,否则以后你的工作量就线性增加了。

点击Edit。配置我们的Hadoop集群信息。

点击测试。显示下图,表示成功。

退回第一个弹出的窗口,点击内容。

点击字段。点击获取字段,点击最小宽度,将时间字段都设置为字符串,指定格式。不必要的字段可以删除。

3.3保存本次数据抽取时间

3.3.1生成唯一主键

3.3.2获取当前时间

3.3.3 设置字段值

3.3.4记录当次数据抽取时间

点击编辑。配置你的Log日志使用的数据库。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180513G0Y90Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券