• 欢迎来到魔据教育大数据学院,专注大数据工程师培养!
    当前位置:首页 > 学习资料 > 讲师博文 > 浅谈大数据的数据流转

    浅谈大数据的数据流转

    时间:2017-08-15 17:52:49作者:[!--zuozhe--]

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

    小哥用到的工具是我们?#27973;?#29087;悉的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

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

    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链接把数据导入到数据库中。最终结果呈现给业务人员或者直接被前端展示调用。
    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

    安徽十一选五开奖号码
  • 青海十一选五遗漏号 双色球复式单式 快乐双彩号码走势图 云南快乐十分50期 澳客足彩 排球铁娘子 白小姐传密2019年117 新时时彩加奖 加拿大快乐8开奖视频 彩票软件排行 香港赛马会 单双中特 浙江飞鱼近期开奖号 广西十一选五兑奖表 黑龙江11选5秘籍 澳洲幸运5最快开奖结果