文档名称第1页共10页Windows/linux下的KETTLE安装1Windows下安装1.1安装JDK1.下载JDK82.设置环境变量JAVA_HOME为C:\ProgramFiles\Java\jdk1.8.0_60在PATH中增加;%JAVA_HOME%\bin1.2安装KETTLE1.官网下载data-integration52.解压到指定目录中3.安装完毕1.3运行KETTLE打开data-integration,找到spoon.bat,双击运行,进入kettle可视化界面2LINUX下安装2.1安装jdk2.1.1在/usr/local新建文件夹javamkdir/usr/local/java把jdk安装文件jdk-8u60-linux-x64.tar.gz传入到/usr/local/java下2.1.2安装jdkcd/usr/local/javatar-zxvfjdk-8u60-linux-x64.tar.gz2.1.3配置环境变量vi/etc/profile在最末行加入文档名称第2页共10页exportJAVA_HOME=/usr/local/java/jdk1.8.0_60exportCLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin然后保存退出执行source/etc/profile使之环境变量立即生效2.1.4测试可以小测一把jdk是否配置好了执行命令java–versionjavaversion1.8.0_60Java(TM)SERuntimeEnvironment(build1.8.0_60-b27)JavaHotSpot(TM)64-BitServerVM(build25.60-b23,mixedmode)出现这个则说明jdk环境变量配置OK2.1.5删除安装包rm/usr/local/java/jdk-8u60-linux-x64.tar.gz2.2Kettle部署新建文件夹mkdir–p/usr/local/kettle将kettle的软件包data-interation.zip上传到/usr/local/kettle文件夹解压unzipdata-interation.zip另外将相关kettle程序代码拷贝到/usr/local/scripts目录下[root@ada~]#mkdir.kettle文档名称第3页共10页[root@ada~]#chmod775.kettle[root@ada~]#ll-d.kettle/drwxrwxr-x2rootroot4096Oct920:24.kettle/另外把其中的kettle.propertiesshared.xml文件拷贝到/root/.kettle目录下[root@ada.kettle]#chmod664*[root@ada.kettle]#lltotal20-rw-rw-r--1rootroot365Sep1719:58kettle.properties-rw-rw-r--1rootroot14854Sep1719:59shared.xml修改kettle.properties文件infilepath=/data/collect_dir/csv/outfilepath=/data/di_dir/csv/shellpath=/usr/local/scripts/如果文件夹不存在建立[root@adadata]#mkdir-p/data/collect_dir/csv/[root@adadata]#chmod777-R/data/collect_dir/[root@adadata]#mkdir-p/data/di_dir/csv/[root@adadata]#chmod777-R/data/di_dir文档名称第4页共10页2.3Shell脚本布置将scripts.zip解压到/usr/local/scriptsChmod775/usr/local/scripts增加可执行权限Cd/usr/local/scripts/Chmoda+x*.sh3常见问题3.1新建数据库连接,点击测试报错默认安装包中不带对应JDBC的连接驱动程序,需要下载对应数据库的连接程序(Oracle/Mysql/PostgreSQL),将驱动库放在在lib文件夹下Mysql驱动:mysql-connector-java-5.1.32-bin.jarPostgreSQL驱动:postgresql-9.4-1203.jdbc42.jarOracle驱动:ojdbc6_g.jar3.2相关配置文件说明windows文件路径:C:\Users\[用户名]\.kettlelinux文件路径:~/.kettle/kettle.properties:配置变量shared.xml:配置公共数据库连接3.2.1kettle.propertiesinfilepath=C:\\outfilepath=C:\\3.3增加日志1.双击空白处--跳出对话框--选择日志选项卡--选择日志通道--选择日志数据库连接,填入对应的表,点击SQL,然后按确认就可以创建3.4Kitchen执行说明Kitchen——作业执行器是一个作业执行引擎,用来执行作业。这是一个命令行执行工具,没啥文档名称第5页共10页可讲的,就把它的参数说明列一下。-rep:Repositoryname任务包所在存储名-user:Repositoryusername执行人-pass:Repositorypassword执行人密码-job:Thenameofthejobtolaunch任务包名称-dir:Thedirectory(don''tforgettheleading/or\)-file:Thefilename(JobXML)tolaunch-level:Thelogginglevel(Basic,Detailed,Debug,Rowlevel,Error,Nothing)指定日志级别-log:Theloggingfiletowriteto指定日志文件-listdir:Listthedirectoriesintherepository列出指定存储中的目录结构。-listjobs:Listthejobsinthespecifieddirectory列出指定目录下的所有任务-listrep:Listthedefinedrepositories列出所有的存储-norep:Don''tlogintotherepository不写日志例如:Linux:./kitchen.sh-file=/Users/xuyongbo/Documents/kettle/kaoqintongbu/main_kaoqin.kjb-level=Basic-log=/tmp/run_kettle.logWindowsZ:\shell\data-integration\kitchen.bat/file:Z:\Documents\kettle\kaoqintongbu\main_kaoqin.kjb/level:Basic/log:E:\run_kettle.log3.5常用内置参数Internal.Job.Filename.Directory:当前作业程序所在路径Internal.Transformation.Filename.Directory:当前转换程序所在路径3.6如何更改kettle的java虚拟机内存有时kettle程序用到大量排序会报内存溢出错误java.lang.OutOfMemory,可以调整下虚拟内存;建议正式环境下,如果内存充足的情况下,把参数调大写。Linux下:修改spoon.sh文档名称第6页共10页if%PENTAHO_DI_JAVA_OPTIONS%==setPENTAHO_DI_JAVA_OPTIONS=-Xmx512m-XX:MaxPermSize=256mwindows下:修改spoon.batPENTAHO_DI_JAVA_OPTIONS=-Xmx512m-XX:MaxPermSize=256m其中:-Xmx:javaheap最大值,使用的最大内存MaxPermSize指明虚拟机为java永久生成对象(Permanategeneration)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中最好将其中-Xmx512m加大最好是256的整数倍3.7Mysql插入速度慢,如何提高?配置数据库连接的时候,在选型中增加以下参数:rewriteBatchedStatements为true:mysql默认关闭了batch处理,通过此参数进行打开,这个参数可以重写向数据库提交的SQL语句useServerPrepStmts为true:使用com.mysql.jdbc.PreparedStatement进行本地SQL拼装,最后送到db上就是已经替换了?后的最终SQLuseCompression为true:连接压缩以上配置后,速度可以提升10倍以上。文档名称第7页共10页3.8Null与空字符串问题默认情况下null与空字符串是一致的,导致你再转换的时候空设置为空字符串,但是输出到数据库的时候,有变成了null。在kettle.properties设置KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL3.9想学习kettle但不知道从哪里入手比较好?1.网上有《kettle入门与实战》的视频教程,各个控件与菜单有讲解到,建议看看2.安装目录下,有sample文件夹,里面有大量的控件例子,多多浏览下,对提高很有帮助3.阅读官方文档,里面相应控件及使用说明4Kettle调用JAVAETL过程中,会遇到一些复制的转换,而这种通过java可以比较容文档名称第8页共10页易实现;这里举个例子,如果通过创建一个java类帮助处理数据转换功能。Eclispse创建包,如题代码如下:packageud_calc;publicclassstrcat{publicstaticfinalStringget_strcat_String(Stringstr1,Stringstr2){returnstr1+,+str2;}}将该工程导出java包,将该jar包放入kettle的libtext目录下。创建一个转换。如下:其中:generateRows:文档名称第9页共10页modifyjavascriptscriptvalue:最终输出结果:cona,aa,a文档名称第10页共10页a,aa,aa,aa,aa,aa,aa,aa,a