欢迎来到魔据教育大数据学院,专注大数据工程师培养!
当前位置:首页 > 学员口碑 > 学员作品 > 大数据的数据流转

大数据的数据流转

时间:2017-08-16 18:52:12作者:

今天小哥想和广大IT发烧友交流一下大数据的数据流转,现在大数据正如火如荼的发展,其实对于现今来说大数据处理技术早已不再是秘密,甚至很多关键的技术都已经做到源码公开,但是很少看到有关整个数据流转的介绍,今天就和大家分享一个非常简单却非常实用的数据流转过程。

小哥用到的工具是我们非常熟悉的shell脚本。且听我娓娓道来。

1、首先制定一个脚本,脚本内添加各种日期类型和IP类型变量,作用:日期类型放在创建日期类型的文件或者文件夹,IP减少脚本工作量。

 

#!/bin/bash
month="`date -d last-day +%Y%m`"
yesterday="`date -d last-day +%Y-%m-%d`"
yes="`date -d last-day +%Y%m%d`"
yea="`date -d last-day +%Y`"
send=`date '+%Y-%m-%d'`
sens=`date '+%H:%M:%S'`
hour="`date +%Y%m%d%H -d  '-1 hours'`"


dataid=192.168.7.201:1521:DTGF
fileid=192.168.7.201:9000
shid=192.168.7.202:9000

 

2、如下过程为抽取数据库数据的过程,为了确保数据在hdfs中是唯一不存在的,首先删除以下该文件。而后使用sqoop工具做jdbc的链接,将数据直接抽取到hdfs中。


hadoop fs -mkdir /user/hadoop/AquivalentHours/AquivalentHours$yea

sqoop import --connect jdbc:oracle:thin:@$dataid --username mywd --password mywd --verbose -m 1 --query 'SELECT * from testdata' --target-dir /user/hadoop/AEquivalentHours/AquivalentHours$yea/AquivalentHours$month

下图为数据抽取运行结果:

3、执行自定义的数据分析方法,下为模拟的两个计算指标,分别到年和月的计算结果。


hadoop jar /usr/hadoop/tsjava/test.jar test.AquivalentHoursYear
hadoop jar /usr/hadoop/tsjava/test.jar test.AquivalentHoursMonth

下图为运行hadoop的结果:

、如下过程是将处理完的数据获取到本地,使用awk工具进行数据截取,作用是为了保证处理好的数据能和数据的字段完全一致,因为数据库的数据是由业务人员制定的,不受我们开发人员限制,所以要做数据处理。
rm -rf /usr/hadoop/data/AquivalentHoursYear.txt
rm -rf /usr/hadoop/data/AquivalentHoursMonth.txt
     
(以上两个rm为了确保本地没有该文件)


4


hadoop fs -get /home/hadoop/AquivalentHoursYear/part-r-00000 /usr/hadoop/data/AquivalentHoursYear.txt
hadoop fs -get /home/hadoop/AquivalentHoursMonth/part-r-00000 /usr/hadoop/data/AquivalentHoursMonth.txt

       (将数据获取到本地)

cat /usr/hadoop/data/AquivalentHoursYear.txt | awk -F'[\t/]' '{print "null"","$1",""01"","$2",""-1"",""-1"",""-1"",""-1"","$3}' > /usr/hadoop/cfdata/AquivalentHoursYear$yes.txt
cat /usr/hadoop/data/AquivalentHoursYear.txt | awk -F'[\t/]' '{print "null"","$1",""02"","$2",""-1"",""-1"",""-1"",""-1"","$4}' >> /usr/hadoop/cfdata/AquivalentHoursYear$yes.txt

(以上为使用cat查看后经过管道符提交被awk做数据格式转换的过程)

 

5、如下为使用sqoop将数据存入数据库的过程。因为awk截取的数据是在本地完成,所以想要使用sqoop需要把数据存入hdfs中,并且使用sqoopjdbc链接把数据导入到数据库中。最终结果呈现给业务人员或者直接被前端展示调用。


hadoop fs -rm -r /user/hadoop/init/Aquivalent/
hadoop fs -mkdir -p /user/hadoop/init/Aquivalent/


(以上为确保截取好的数据在集群不存在,先删除,在把处理好的放进hdfs
hadoop fs -put /usr/hadoop/cfdata/AquivalentHoursYear$yes.txt /user/hadoop/init/Aquivalent/AquivalentHoursYear$yes.txt
hadoop fs -put /usr/hadoop/cfdata/AquivalentHoursMonth$yes.txt /user/hadoop/init/Aquivalent/AquivalentHoursMonth$yes.txt
(以上为数据存入hdfs的过程)


sqoop export --connect jdbc:oracle:thin:@$fileid --username mywd --password mywd --table testtable --export-dir hdfs://$shid/user/hadoop/init/Aquivalent/AquivalentHoursYear$yes.txt --input-fields-terminated-by ','


sqoop export --connect jdbc:oracle:thin:@$fileid --username mywd --password mywd --table testtable --export-dir hdfs://$shid/user/hadoop/init/Aquivalent/AquivalentHoursMonth$yes.txt --input-fields-terminated-by ','

下图为数据存入过程:

(以上为数据如果的过程)


 

 

其实这些技术对于目前的大数据处理手段来说都是比较基础的,常用的,但是都是被拆开来使用,很少有人系统的把他们组织起来,做一个数据流的脚本,今天小哥为分享此案例,目的是为了整理大家的头绪,如果哪里做的有问题请大家多指正。

 

 


更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
学习大数据敬请关注魔据教育微信二维码。
魔据教育微信二维码

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至kefu@mojuedu.com,我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

在线咨询:张老师QQ 320169340

企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

免费在线咨询立即咨询

免费索取技术资料立即索取

大数据技术交流QQ:226594285

电话咨询010-82340234