首页 > 技术文章 > Kettle

suheng01 2020-09-03 16:01 原文

1.mysql->mysql(完全同字段数据同步)

  当然,实际此种情况当然可以选择navicat

  1)打开spoon,连接资源库(推荐)

  2)新建转换,之后在主对象树新建数据库连接并右键共享(统一数据源管理)

  3)拖入一个表输入,配置连接信息,获取SQL语句,完成表输入配置(无变量情况)

  

 

 

     4)拖一个表输出(需要在目的库中先建表),选择目标表,获取字段,输入字段映射

    

 

 

 

    5)运行转换,查看日志

2.mysql->mysql(目的库增加来源、系统时间两个字段)

  如果按照常规的使用自定义常量数据,将会报错如下:

  

 

 

   根据网友提示,使用核心对象->转换->增加常量:

  

 3.简单数据增量同步

  基本参考:https://blog.csdn.net/aganliang/article/details/84995294

  此方式的弊端,参考上述链接。此方式有个缺陷是每个表都需要一个表来记录加载时间,可以优化为一个总表汇总

  通过增加设置常量等组件,不过SQL语句等就需要写死一些表名了,也不利于拓展

  1)首先新建一个表用于记录同步时间(此处采用和资源库相同的库保存此表)

复制代码
CREATE TABLE `etl_time_actor` (
`last_load_time`  datetime NULL DEFAULT '1970-01-01 00:00:00' COMMENT '上次同步时间' ,
`curent_load_time`  datetime NULL COMMENT '当前时间' 
)
COMMENT='etl同步时间'
;
复制代码

 2)第一个转换用于将当前时间内存入current_load_time字段中:

 

   

 

     

  // 通过current_load_time这个表字段来进行判断

 

   3).第二个转换用于抽取增量数据

    首先第一个转换设置的时间:

    

 

 

     然后通过参数提取增量数据(时间从前一步读取)

    

    注意要勾选替换变量!

 

     最后插入增量数据(选择裁剪表则会对数据进行清空,再插入)

    

 

 

 

 

   4)第三个转换,将上次加载时间设置为本次时间,方便下次做增量

     

   5)这样我们将几个转换串起来,增量提取简易版就算完成了

    

 4.同步数据到Hive

1. 在kettle中设置hive相关配置

首先在Hive的安装目录里(/usr/hdp/2.6.4.0-91/hive2/jdbc)找到Hive的jdbc的jar文件,

复制这个jar文件到Kettle的lib目录下(D:\data-integration\lib),

重启Kettle。

修改plugin.properties文件(D:\data-integration\plugins\pentaho-big-data-plugin)

active.hadoop.configuration=hdp25

2. 在kettle中添加hive的DB连接

3. 在kettle中添加数据库及表(使用xshell)

 

任务

执行

进入hive

hive

创建数据库

create database test;

使用数据库

use test;

创建表

create table a(a int,b int) row format delimited fields terminated by ',';

从文件写入

load data local inpath '/home/hive/hive_test.txt' into table a;

查询数据

select * from a;

 

推荐阅读