当前位置:   article > 正文

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

【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码表上找到对应的分隔符十六进制数,写入$[]即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/589993
推荐阅读
相关标签
  

闽ICP备14008679号