大数据报文对数工具
来源:互联网 发布:付费ss推荐 知乎 编辑:程序博客网 时间:2024/06/02 00:20
大数据中的报文一般以文件形式存放。比如这样:
AAA|BBBB|123|123|1|2|3|CCC|DDDD|2017-02-01
字段间用竖线分割,这些字段是有实际意义的。在对数时,很难一眼看出某个想要的字段在哪里。
为了方便追查问题,我写了个对数工具,可以从shell里直接把报文对号入座。
首先准备一个配置文件:
/home/hadoop/bin/turndo/census/mesConstruts.conf
内容如下,想对一种数就在里面配置一行。
6|sjxx|收寄信息|邮件ID|邮件条码|邮件号码|邮件种类代码|收寄局代码|寄达局代码|行政区划|邮件备注|收件人手机号码|收件人名字|收件人地址|收件人邮编|寄件人手机号码|寄件人名字|寄件人地址|寄件人邮编|邮件重量|邮件体积|邮件资费|投递段|投递顺序|第一开拆局|大宗编号|内件信息|进口接口时间|收寄日期|收寄来源|收寄局标志|收寄县市代码|收寄地市代码|收寄省份代码|收寄频次|收寄频次截止时刻|收寄频次第几日|收寄单位属性|收寄频次市趟运行时长|寄达局县市|寄达局地市|寄达局省份|寄达局标志|预计市趟进中心局时间35|sjfjlzjb|上机分拣量第一步|邮件条码|所属省|所属地市|所属县市|所属局代码|进出口标志|收寄单位属性|扫描时间|邮件种类|扫描状态|扫描类型|发送时间|发送标志|车间代码|班次代码|台席代码|操作员代码
注意保存的编码格式要和linux系统默认编码格式一样
在/home/hadoop/.bashrc 中 alias一个新的命令:
alias transm=translatetranslate(){ if [ $# -eq 0 ] ; then #声明都能对哪些数 sh /home/hadoop/bin/turndo/census/echo-transm.sh elif [ $# -eq 2 ] ; then type=$1 codeline=$2 #读配置文件,通过type找想要的配置 scount=`cat /home/hadoop/bin/turndo/census/mesConstruts.conf |grep '|'$type'|' |wc -l` if [ $scount != 0 ] ; then nameline=`cat /home/hadoop/bin/turndo/census/mesConstruts.conf |grep '|'$type'|'` #将报文本身和数据字典都以竖线分割 names=(${nameline//|/ }) codes=(${codeline//|/ }) label="`echo $nameline |cut -d '|' -f 3`" echo $label xh=0 nm=0 len=${#names[@]} len=`expr $len - 3`; for name in "${names[@]}"; do nm=`expr $nm + 1`; if [ $nm -gt 2 ] && [ $xh -lt $len ] ; then i=`expr $xh + 1`; k=`expr $xh + 4`; code=`echo $2 |cut -d '|' -f $i` aname="`echo $nameline |cut -d '|' -f $k`" namelen=`echo $aname |awk -F "" '{print NF}'` codelen=`echo $code |awk -F "" '{print NF}'` if [ $codelen -lt 1 ] ; then code="[got no value]" fi if [ $namelen -lt 1 ] ; then aname="LOSS BLANK" fi echo $xh ${aname} ":" "${code}" xh=`expr $xh + 1`; fi done fi fi}
写完别忘了source .bashrc
使用时直接敲击命令transm sjxx "你的报文" (这个双引号是必须的加,不然不它认为这是一个参数)实际效果像这样:
声明能对哪些数那里没什么技术含量,加了个自动换行,但效果不怎么好:
/home/hadoop/bin/turndo/census/echo-transm.sh
confcount=`cat /home/hadoop/bin/turndo/census/mesConstruts.conf |wc -l`namefile=`cat /home/hadoop/bin/turndo/census/mesConstruts.conf`i=1last_fid=""echoline=""for line in $namefile;do fname=`echo $line |cut -d '|' -f 3` fid=`echo $line |cut -d '|' -f 2` i=`expr $i + 1`; echoline=$echoline", "$fname"("$fid")" #len=`echo $echoline|awk '{print length($0)}'` #echo $len len=`expr length "$echoline"` if [ $len -gt 30 ]; then echo ${echoline#*,} echoline="" fi last_fid=$fiddoneecho ${echoline#*,}
0 0
- 大数据报文对数工具
- 大数据工具了解
- 大数据,大开源工具
- 大数据工具集合
- 大数据相关工具
- 大数据分析工具
- 大数据工具
- 大数据工具/框架
- 大数据工具/框架
- 大数据开发工具
- Fiddler http 报文分析工具为何捕捉不到数据?
- 对数数据相关
- 大数据测试数据构造工具
- 大数据可视化工具点评
- 报表工具与大数据
- 大数据分析工具简介
- 大数据开发必备工具
- 各种大数据工具架构
- Struts2校验器的开头配置
- UDP打洞原理
- MySQL创建表更改表结构
- 从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI -- 概念简介
- Solr4.8——开发环境搭建(Eclipse or MyEclipse)
- 大数据报文对数工具
- 关于 给 Android 开发者的 RxJava 详解 这篇文章的心得
- 剑指Offer——编程题的Java实现(更新完毕……)
- NOIP 1999 普及组 复赛 Cantor表
- 车缴App SupportUrl
- 在Linux下部署Java Web项目的详细步骤,包括jdk、Tomcat、MyEclipse等的下载和安装
- OpenSSL RSA 消息签名与验证
- MVC(2)
- 多线程 加锁的三种方式