摘要: Kettle是一款高效易用的开源ETL工具,DWS支持和Kettle的对接以及各种数据入库方式。
准备工作:在使用Kettle对接DWS前,请先安装号Kettle,并确保网络和DWS可以连通。
一、 配置Kettle的DWS数据库连接:
可选:用户可以使用PG原生驱动,或使用DWS提供的驱动替换PG驱动。在Kettle\data-integration\libext\JDBC目录中有jdbc驱动,需要把pg原有的jdbc驱动替换成mppdb的驱动,命名仍按照pg原有的命名。
选择PostgreSQL连接,填写connection name、host name、database name、port number、username、password等,点击OK。
![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/201910/12/161106ovnden4lp9pnual0.png)
二、 使用Kettle加载数据至DWS
1) 从源端库导出成文件到OBS或本地服务器,然后用bulk load导入方式(OBS数据加载、本地数据加载),通过DWS创建外表,在转换中添加执行SQL脚本,在执行SQL语句中执行bulk load语句。(推荐,传输速率最快可至集群每个计算节点100MB/s以上)
![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/201910/12/161217jqabtqzb6du3armh.png)
2) 通过自定义Java代码,走Copy的方式,流式数据入库(时效性高,入库效率百万条/s)
![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/201910/12/161420okeb1rktvnpvllwn.png)
示例代码:
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
import java.io.StringReader;
private Connection con;
private StringBuffer tuples;
private int count;
private String sql