歡迎來到魔據教育大數據學院,專注大數據工程師培養!
當前位置:首頁 > 學員口碑 > 學員作品 > 大數據的數據流轉

大數據的數據流轉

時間:2019-04-12 14:03:35作者:

今天小哥想和廣大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 ','

下圖為數據存入過程:

(以上為數據如果的過程)


 

 

其實這些技術對于目前的大數據處理手段來說都是比較基礎的,常用的,但是都是被拆開來使用,很少有人系統的把他們組織起來,做一個數據流的腳本,今天小哥為分享此案例,目的是為了整理大家的頭緒,如果哪里做的有問題請大家多指正。

 

 


更多大數據相關資訊敬請關注魔據教育,為您分享最及時的大數據資訊。
學習大數據敬請關注魔據教育微信二維碼。
魔據教育微信二維碼

【版權與免責聲明】如發現內容存在版權問題,煩請提供相關信息發郵件至[email protected],我們將及時溝通與處理。本站內容除非來源注明魔據教育,否則均為網友轉載,涉及言論、版權與本站無關。

全國咨詢熱線:18501996998,值班手機:18501996998(7*24小時)

在線咨詢:張老師QQ 320169340

企業合作服務專線:010-82340234-821, 院校合作洽談專線:010-82340234

Copyright 2001-2019 魔據教育 - 北京華育興業科技有限公司 版權所有,京ICP備17018991號-2

免費在線咨詢立即咨詢

免費索取技術資料立即索取

大數據技術交流QQ:226594285

電話咨詢010-82340234

六合图库118万众图库