【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法

【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法

前言

由于需要设计一个每天多批次的定时作业,由于单端逻辑不能抽取出目标数据,其中涉及了跨库问题,因此需要从mysql、Oracle数据库中将数据同步至一个统一的环境中(hive),那么由于数据量大(百亿级),关联数据要从各个业务部门自有的数据库导入,kettle无疑成了最好的选择。

设计

由于要推张业务支持表出去,因为在这里我根据四张业务表的前置表依赖关系做了个聚类,把四项业务的数据导入流程分在了四个方向上,方便日后有针对性的修改,效果如下:
在这里插入图片描述
设计完成后提交生产集群上跑,一切都很顺利:
在这里插入图片描述
查看了一下中间文件,问题来了:
在这里插入图片描述
‘\u0001’分隔符失效!

问题分析

按照公司的规范,hive外部表的文件分隔符统一使用‘\u0001’,但是笔者在job中设置的变量失效了,很明显kettle不支持特殊字符的这种写法:
在这里插入图片描述
问题的关键在于,找到一种kettle支持的特殊字符的写法。

解决办法

查阅网上的一些现有资料后,笔者找到了解决办法,根据ASCII码表,我们在kettle中采用$[十六进制值]方式来表示:
在这里插入图片描述

比如‘\u0001’的十六进制是01,就用$[01]来表示:
在这里插入图片描述
随后再执行,去hdfs上查看文件就看到可以正常分隔了:
在这里插入图片描述

后记

根据自己的需要,需要什么样的分隔符,就在ASCII码表上找到对应的分隔符十六进制数,写入$[]即可。

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值