推荐采用先将数据同步到服务器目录,然后再上传到inceptor外表对应的hdfs目录,然后再将数据从外表插入到orc表。这样做的好处有:
- Kettle同步到服务器本地目录的速度十分快,例如同步到本地文件夹可以达到100000条/s;
- 可以对接开启了安全认证的inceptor或者hdfs。
下面以samba方式举例说明同步过程
本示例中,172.18.9.30的/tmp目录共享给Windows免密访问。
访问路径:\\172.18.9.30\test
注意事项:
1. windows需要使用本地账户登陆;
2. 防火墙关闭,selinux关闭;
3. Windows和linux的机器最好在同一网段,跨网段139和445端口不要限制访问。
4. 445端口曾经出现过比较严重的安全事故,很多公司的网络安全管理员都把这个端口封了,不在同一局域网无法通过445实现共享。
通过Samba服务共享给Windows访问
(1) 安装samba
yum install –y samba
(2) 配置samba
vi /etc/samba/smb.conf
在security = user下加入如下一句:
map to guest = Bad User
注意:如果网络限制了445端口,则应该再加入smb ports = xxxx(port number)以更改samba服务的端口。
在文件最后加入:
[test]
comment = WORKGROUP
path = /tmp
public = yes
writable = yes
browseable = yes
(3) 启动samba服务:
service smb restart
(4) 配置开机启动:
/etc/rc.d/rc.local里,添加service smb start
最终效果如下图:
配置kettle进行数据处理及输出
先下载kettle软件包,https://community.hitachivantara.com/home,然后解压下载的软件包,进入解压的目录下,执行Spoon.bat
(1)建立转换配置数据源
点击文件->新建->转换,建立转换任务
新建转换后选中左边的"主对象树",建立DB连接用以连接数据库。如图所示:
![]()
注意:在数据库链接的过程中,可能会报某个数据库连接找不到的异常。那是因为你没有对应的数据库链接驱动,请下载对应驱动后,放入kettle的lib文件夹。
(2)简单的数据表插入更新
在左边的面板中选择“核心对象”,在核心对象里面选择“输入->表输入”,用鼠标拖动到右边面板。如图所示:
双击拖过来的表,可以编辑表输入。
选择数据库连接和编辑sql语句,在这一步可以点击预览,查看自己是否连接正确
(3)在左边面板中选择核心对象、选择“输出->文本文件输出”如图所示:
文件名称使用前面配置的samba共享路径
选中表输入,按住shift键,拖向插入更新,表输入连接插入更新
到这里基本上,这个转换就要做完了,可以点击运行查看效果,看是否有误
(4)页面点击执行
上图中的速度是3000条左右每秒,是因为测试环境用的网络很不好的idc环境;如果在同一网段,百兆宽带的速度将是十分快的,参考如下的将数据同步到本地文件。如下图所示:
将数据文件导入Inceptor
(1)下载tdh-client,并上传到集群
tar -xvf tdh-client.tar
source TDH-Client/init.sh
然后执行hdfs dfs -ls /,可以看到,已经能够使用hdfs命令。
(2)将数据文件上传到HDFS
![]()
使用hdfs命令将文件上传到某个hdfs中的目录, 假设用hdfs上的/tmp/test/文件夹作为示例外表的目录
(3)建立基于上述hdfs目录的外表并查看外表中的数据
(4)将外表数据插入Inceptor的ORC表
①创建相同表结构的ORC表
②将外表数据插入ORC表
完成。