kettle的配置

  • 格式:doc
  • 大小:247.00 KB
  • 文档页数:7

版本号:V1.0

采集转换引擎实施文档

刘从云

一、Kettle的资源数据库

1、解压缩(Kettle)pdi-ce-3.2.0-stable.zip至采集机。

2、设置系统环境变量KETTLE_HOME,右键点击“我的电脑”→“属性”→“高级”→在“系统变量”处点击“新建”,分别输入变量名及值:

KETTLE_HOME

D:\Program Files\(Kettle)pdi-ce-3.2.0-stable\data-integration(Kettle的解压路径,直到Kettle.exe所在目录)

PATH

% KETTLE_HOME%;

3、替换%KETTLE_HOME%\.kettle\kettle.properties文件, 修改该文件里的各数据源及风控目标数据库的连接字符串信息,kettle.properties的配置如下所示:

数据源配置格式:

LOCALFAHOST=192.168.16.10 Host Name

LOCALFADATABASE=feappaix Database Name

LOCALFAPORT=52000 Port

LOCALFAUSER=risk User Name

LOCALFAPSW=risk Password

风控目标库,转换目标库配置格式

HOST=192.168.16.10 主机名

DATABASE=liucongy 数据库名

PORT=1521 端口号

USER=risk 用户名

PSW=risk 密码

4、启动kettle,

1)新建到资源库的数据库连接

点击“新建”按钮,弹出以下对话框 版本号:V1.0

这里可以选择本地一个数据库作为资源库,,最初没有资源库,

则点击新建按钮,新建一个数据库(做资源库)连接,注意前提是(mysql为例)已存在该数据库。(\\192.168.16.8\Share\个人杂项目录\lubacui\Database\kettle)目录下有关于mysql,kettle的相关安装文件。

建立到数据库的连接:

点击“新建”按钮,选择General 选项 ,输入mysql数据库连接的相关信息。完毕后,点击test,

图1 创建资源库

弹出提示正确连接到数据库,则配置成功。

版本号:V1.0

图2 创建资源库的配置

要指定字符编码与创建的数据库一致。

2)创建资源库

选择好刚创建的数据库连接,填写好资源库名称,

注意:这里名称不能输入中文或特殊字符,虽然不提示出错,最后会导致配置不成功。

点击“创建或更新”按钮创建新的资源库

版本号:V1.0

即在repo数据库中创建资源库(关于资源库的建表脚本在\\192.168.16.8\Share\个人杂项目录\lubacui\Database\kettle\Noname1.txt中)如果你选择了在repo库中手动执行了Noname1.txt中的sql,那么直接选否,然后admin/admin登录就OK了。

当然也可以选择帮你自动创建,那么选择是,弹出:

意思是为创建资源库这个过程执行之前您是否想看看这个创建过程的具体的sql语句

选择否,则直接创建资源库,完成后弹出。

选择是,则弹出sql语句对话框,里面显示的是创建所有表和插入相关数据的sql语句。点击关闭。

点击确认,然后admin/admin登录。

二、导入kettle的资源库转换配置

在kettle界面点击菜单“资源库”→“探索资源库”,进入“资源库浏览器”界面,如图3所示:

图3 资源库浏览器

右键点击资源库根目录,选择“从一个XML导入所有的对象”。然后测试数据库连接是否都正常。 版本号:V1.0

三、采集转换

对于市场和财务的采集转换根据时间的不同采用2种方式来采集转换

1、历史数据

由于历史数据是过去一段时间内的数据,数据量一般比较大,为了节约时间,对于历史数据的采集和转换,我们用kettle的图形界面来采集和转换。

注意:对于财务数据的采集和转换是不能跨年的。

2、每天实时数据

对于每天新的数据,通过FeApp业务系统的调用功能,调用市场和财务的采集转换。

四、FeApp调用计算引擎

1、FeApp调用FeEngine ,在WEB-INF\classes目录下的fewebsvc.properties: 调用FeEngine 配置文件:

mon.ws-hostip=127.0.0.1 (部署服务的ip)

mon.ws-hostport=8090 (应用访问的端口 )

mon.ws-appname=feengine (feengine 的应用名)

2、 在FeApp中分为定时任务和手动任务

1) 定时任务:每天在特定时间调用,计算当天的数据,在数据库

sp_taskgrpdict表中 id为:TG0000000000 schedualtime规定了每天什么时间开始运行自动任务(eg:2000 代表晚上8点开始自动任务)

SP_SYSTEM_PARAM表中S0000001系统最后交易日参数 规定了自动任务执行的业务日期

2) 手动任务:

手动任务是通过计算引擎——手动任务调度功能来设置,调用设置好可以到手动任务执行状态表sp_mt_taskrunstate 去查看任务是否设置好和执行状态

手动任务执行完毕,可以到sp_process_detail_log表查看是否执行成功,

在sp_taskdict任务定义表中有每个任务的ID和实现类名,如果某个任务数据计算有问题可以查看相对应的类。

注意:要确认 SP_SYSTEM_PARAM表中S0000001系统最后交易日参数必须要大于当前系统时间,手动任务才会被执行。

五、常见问题

对于每个表的数据采集和转换,我们可以在日志文件中查看时否有错误发生,在图形操作界面时:%KETTLE_HOME%\.kettle\kettle.properties文件中,

LOGDIR=D:\\Program Files\\data-integration\\log\\ 指定日志文件的位置;FeApp业务系统的调用功能时 fedataprocess.properties:LOGDIR为日志路径 版本号:V1.0

kettle常见问题:

1、ORA-00001: 违反唯一约束条件

违反唯一约束条件是常见问题之一,发生这种问题大部分是源库的某条数据的主键的数据在目标库已经被使用,或者有重复的数据,或者在采集转换时用到sequence,但用到其他表的sequence

2、ORA-01400: 无法将 NULL 插入

("RISK"."FE_DICTIONARY"."ID")

这种情况是无法将NULL插入一个要求为非空的字段,这是表结构的问题,一般是在源库的表中是允许某个字段为空,但在目标库中不允许这个字段为空,此时要确认是否这个字段为空。

3、 ORA-00904: "TEMP": 标识符无效

这种情况一般是源库表中存在某个字段,而在目标库中不存在或不需要,此时需要在数据输入时,把这个字段去掉

财务数据的转换,组合数据的问题查看和解决

1、在运行后财务某个组合的数据转换后:

a)在目标库中查表 证券转换异常表(sp_sec_tran_exce) 如此表有此组合的异常代码,可以通过sourcecode eg: sourcecode (600115) 关联 laccount

科目表 eg: select * from laccount where facctcode like

'%600115%' ;查出对应得FACCTNAME:东方航空,

b)通过FeApp 业务系统 证券转换异常查询 查出源证券代码为600115的 版本号:V1.0

然后选中异常日期最早的一条 点配置,进入目标证券配置将在laccount查出的FACCTNAME 输入证券名称,进行查询,在结果中选择,双击,保存

c)配置好所有的证券转换异常表的代码后 再重新运行转换

2、数据检查结果表Sp_Data_Check_Result 中有财务数据错误和正确的日志信息 。