kettle使用指南
一、kettle下载
[官网地址][1]
1. 安装JDK环境:JDK1.8以及更高的版本
2. 下载以后解压就可以使用了
二、任务(.kjb)与转换(.ktr)
简单地说,一个转换就是一个ETL的过程,而作业则是多个转换、作业的集合,在作业中可以对转换或作业进行调度、定时任务等
三、组件
1.spoon.bat/spoon.sh
图形界面工具,就是启动上图主界面的命令行。这个界面应该是JavaFX做的。这个用来在有图形界面的系统下写任务,如Windows,写好后,也可以通过该工具进行执行,调试。
2.kitchen.bat/kitchen.sh
./kichen.sh -file ./demo.kjb
作业脚本后缀是.kjb
3.pan.bat/pan.sh
./pan.sh -file ./demo.ktr
转换的后缀是.kjb
基于以上两种脚本,可以启动spoon.bat/spoon.sh 在其图形界面系统下写好脚本以后使用命令行执行。
四、设置数据库
1、将相应的数据库驱动拷贝到data-integration目录下的lib文件夹内
2、填上相应的主机名、数据库名、端口号以及用户名和密码,然后点击测试
以上方式相对不太灵活,一般采用以下方式配置数据库
修改配置文件
进入data-integration的simple-jndi目录下
修改文件jdbc.properties
TBIN/type=javax.sql.DataSource
TBIN/driver=org.apache.hive.jdbc.HiveDriver
TBIN/url=jdbc:hive2://ip:port
TBIN/user=userName
TBIN/password=password
以上配置为连接hive的配置,其中TBIN为自己任意指定的名称,其他数据库的配置同上相似
重新启动spoon,然后在spoon界面中
然后测试通过那么就配置成功了
五、CDH5.6.7支持SparkSQLThriftServer
下载社区版本的spark
我这边cdh的spark版本是2.1.1,所以我下载的社区版的spark也为2.1.1
进入$SPARK_HOME/conf
增加文件 hive-site.xml
添加如下内容
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://cdhnode:9083</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10001</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>cdhnode</value>
</property>
</configuration>
然后进入$SPARK_HOME/sbin
执行以下命令:
./start-thriftserver.sh --master yarn --conf spark.dynamicAllocation.enabled=true
六、遇到的问题
错误连接数据库 [test] : org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database
Error connecting to database: (using class org.apache.hadoop.hive.jdbc.HiveDriver)
No suitable driver found for jdbc:hive://xxxxx:10000/default
这种问题一般是没有将驱动包拷贝到到data-integration目录下的lib文件夹内或者使用cdh版本的hive时没有将驱动拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh57\lib
下。
2018/03/15 14:56:44 - hive_test2 - at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
2018/03/15 14:56:44 - hive_test2 - at java.sql.DriverManager.getConnection(DriverManager.java:664)
2018/03/15 14:56:44 - hive_test2 - at java.sql.DriverManager.getConnection(DriverManager.java:247)
2018/03/15 14:56:44 - hive_test2 - at org.osjava.sj.loader.SJDataSource.getConnection(SJDataSource.java:101)
2018/03/15 14:56:44 - hive_test2 - at org.osjava.sj.loader.SJDataSource.getConnection(SJDataSource.java:81)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.core.database.Database.normalConnect(Database.java:431)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.core.database.Database.connect(Database.java:370)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.job.entries.sql.JobEntrySQL.execute(JobEntrySQL.java:243)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.job.Job.execute(Job.java:724)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.job.Job.execute(Job.java:865)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.job.Job.execute(Job.java:546)
2018/03/15 14:56:44 - hive_test2 - at org.pentaho.di.job.Job.run(Job.java:436)
2018/03/15 14:56:44 - hive_test2 - Caused by: java.lang.ClassNotFoundException: org.apache.thrift.transport.TTransportException
2018/03/15 14:56:44 - hive_test2 - at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
2018/03/15 14:56:44 - hive_test2 - at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2018/03/15 14:56:44 - hive_test2 - at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2018/03/15 14:56:44 - hive_test2 - ... 12 more
2018/03/15 14:56:44 - hive_test2 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : A serious error occurred during job execution:
2018/03/15 14:56:44 - hive_test2 - Unexpected error occurred while launching entry [SQL.0]
2018/03/15 14:56:44 - hive_test2 - org/apache/thrift/transport/TTransportException
这种问题一般是kettle缓存的问题,只需要将data-integration\system\karaf\caches\
下的kitchen文件夹删除即可
上一篇: Kettle的简单使用
下一篇: 同事一下午没有搞定的事情,1分钟搞定