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

    大数据的数据流转

    时间:2017-08-16 18:52:12作者:[!--zuozhe--]

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

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

    1、首先制定一个脚本,脚本内添加各种日期类型和IP类型变量,作用:日期类?#22836;?#22312;创建日期类型的文件或者文件?#26657;?span lang="EN-US">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查?#26149;?#32463;过管道符提交被awk做数据格式转换的过程)

     

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


    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 ','

    下图为数据存入过程:

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


     

     

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

     

     


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

    【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发?#22987;?#33267;[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉?#25226;月邸?#29256;权与本站无关。

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

    在线咨询:张老师QQ 320169340

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

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

    安徽十一选五开奖号码