zoukankan      html  css  js  c++  java
  • kettle使用教程1

    第1章 kettle概述

    1.1 什么是kettle

    Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

    1.2 Kettle核心知识点

    1.2.1 Kettle工程存储方式

    1) 以XML形式存储

    2) 以资源库方式存储(数据库资源库和文件资源库)

    1.2.2 Kettle的两种设计

    简述:Transformation(转换):完成针对数据的基础转换。

    Job(作业):完成整个工作流的控制。

    区别:(1)作业是步骤流,转换是数据流,这是作业和转换的最大区别

    (2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个空间对应启动一个线程),然后数据流会从第一个控件开始,一条记录,一条记录地流向最后的控件。

     

    1.2.3 Kettle的组成

    勺子(spoon.bat/spoon.sh):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。Windows选择spoon.bat;Linux选择spoon.sh
    煎锅(pan.bat/pan.sh):利用pan可以用命令行的形式调用Trans
    厨房(kitchen.bat/kitchen.sh):利用kitchen可以使用命令调用Job
    菜单(carte.bat/carte.sh):carte是一个轻量级的web容器,用于建立专用、远程的ETL Server
    1.3 kettle特点

    免费开源:基于Java的免费开源的软件,对商业用户也没有限制

    易配置:可以在window、Linux、unix上运行,绿色无需安装,数据抽取高效稳定

    不同数据库:ETL工具集,它允许你管理来自不同数据库的数据

    两种脚本文件:transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制

    图形化界面设计:通过图形化设计实现做什么业务,无需写代码去实现

    定时功能:在job下的start模块,有一个定时功能,可以每日、每周等方式进行定时。

    第2章 kettle安装部署和使用
    2.1 kettle安装地址

    官网地址

    https://community.hitachivantara.com/docs/DOC-1009855

    下载地址

    https://sourceforge.net/projects/pentaho/files/Data%20Integration/

    kettle各版本国内镜像下载地址:http://mirror.bit.edu.cn/pentaho/(下载速度相对快一些)

    2.2 Windows下安装使用

    2.2.1 概述

    在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行

    2.2.2 安装

    1) 安装jdk

    2) 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

    3) 双击Spoon.bat,启动图形化界面工具,就可以直接使用了

    2.2.3 案例

    1) 案例一 把stu1的数据按id同步到stu2,stu2有相同id则更新数据

    (1)在mysql中创建两张表

    mysql> create database kettle;

    mysql> use kettle;

    mysql> create table stu1(id int,name varchar(20),age int);

    mysql> create table stu2(id int,name varchar(20));

     

    (2)往两张表中插入一些数据

    mysql> insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);

    mysql> insert into stu2 values(1001,'wukong');

     

    (3)在kettle中新建转换

    4、然后新建两个数据库的连接

    kettle通过域名或者IP连接Oracle,因为今天客户要求把数据库由原来的MySQL切换到Oracle,历史数据的迁移。本篇博客主要讲解kettle连接Oracle数据库。本机不需要安装Oracle,但是要把Oracle的驱动jar包复制到kettle的lib目录下:

    Oracle驱动jar包:(包括:ojdbc5.jar、ojdbc6.jar、ojdbc7.jar、ojdbc8.jar、ojdbc10.jar、ojdbc14.jar)

    链接: https://pan.baidu.com/s/1DMB8vF_iFqJsyi7YoJnvHA

    提取码: zdm6

    我这里用的是:ojdbc6.jar

    准备工作完成,下面连接Oracle:

    主机名称:不用填

    数据库名称:填写域名或者IP:端口/服务名

    数据表空间:不用填

    索引表空间:不用填

    端口号:-1,因为再填写数据库名称时已经填写,所以这里填写-1

    用户名:用户名

    密码:密码

    点击:测试

    然后就是MySQL的

    点击测试

     

    还有就是一开始没导入MySQL的驱动也会报错:如下

    错误连接数据库 [test] : org.pentaho.di.core.exception.KettleDatabaseException: 
    Error occurred while trying to connect to the database
    
    Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
    org.gjt.mm.mysql.Driver
    
    
    org.pentaho.di.core.exception.KettleDatabaseException: 
    Error occurred while trying to connect to the database
    
    Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
    org.gjt.mm.mysql.Driver
    
    
    	at org.pentaho.di.core.database.Database.normalConnect(Database.java:472)
    	at org.pentaho.di.core.database.Database.connect(Database.java:370)
    	at org.pentaho.di.core.database.Database.connect(Database.java:341)
    	at org.pentaho.di.core.database.Database.connect(Database.java:331)
    	at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:80)
    	at org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2783)
    	at org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:597)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:313)
    	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:157)
    	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:141)
    	at org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:43)
    	at org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:137)
    	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
    	at org.eclipse.jface.window.Window.open(Window.java:796)
    	at org.pentaho.di.ui.xul.KettleDialog.show(KettleDialog.java:80)
    	at org.pentaho.di.ui.xul.KettleDialog.show(KettleDialog.java:47)
    	at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:116)
    	at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
    	at org.pentaho.di.ui.spoon.delegates.SpoonDBDelegate.editConnection(SpoonDBDelegate.java:96)
    	at org.pentaho.di.ui.spoon.Spoon.doubleClickedInTree(Spoon.java:3108)
    	at org.pentaho.di.ui.spoon.Spoon.doubleClickedInTree(Spoon.java:3043)
    	at org.pentaho.di.ui.spoon.Spoon.access$2300(Spoon.java:361)
    	at org.pentaho.di.ui.spoon.Spoon$26.widgetDefaultSelected(Spoon.java:6184)
    	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
    	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    	at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1366)
    	at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:8022)
    	at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9277)
    	at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:692)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
    Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 
    Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
    org.gjt.mm.mysql.Driver
    
    	at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:515)
    	at org.pentaho.di.core.database.Database.normalConnect(Database.java:456)
    	... 47 more
    Caused by: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:490)
    	... 48 moreqq'y'd

    加入驱动是这个,放在目录lib中

  • 相关阅读:
    设置MYSQL允许用IP访问
    EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题
    Oracle初级性能优化总结
    Asp.Net MVC3.0网站统计登录认证的在线人数
    App.config和Web.config配置文件的配置节点的解析
    App.config和Web.config配置文件的自定义配置节点
    Asp.Net Web API 2第十八课——Working with Entity Relations in OData
    win7凭据管理、win7多用户远程登录、主机头设置、nuget.org无法访问
    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    C#基础知识系列八(const和readonly关键字)
  • 原文地址:https://www.cnblogs.com/easyjie/p/15740627.html
Copyright © 2011-2022 走看看