公司近期搭建了hadoop集群尼夺,改造前后的體系架構(gòu)如下:
?????? 從圖中可以看出用hive庫(kù)帕翻,替代了db2和td中的cdr層仅淑,也就是業(yè)務(wù)處理邏輯層,之后再把匯總數(shù)據(jù)抽取到db2和td绘梦,在此聊聊抽取到兩個(gè)庫(kù)中的用法橘忱。
??????? 由于本次抽取需要生成落地文件,所以并沒有用sqoop直接抽取到傳統(tǒng)的數(shù)據(jù)庫(kù)卸奉,而是采用insert?overwrite locat導(dǎo)出文件到本地系統(tǒng)钝诚,之后load裝載到db2
》抽取hive匯總層數(shù)據(jù),生成文件
???? ? insert overwrite local在沒有設(shè)置hive配置的時(shí)榄棵,導(dǎo)出的文件是壓縮文件凝颇,所以這里需要添加配置,語(yǔ)法如下:
hive?-e?"set?mapred.job.queue.name=app;set?hive.exec.compress.output=false;set?hive.exec.compress.intermediate=false;insert?overwrite?local?directory?'/data8/demo'?row?format?delimited?fields?terminated?by?'^'??select?*?from?test_hive_table where?op_month= 201701 and?op_time= 20170111 and?op_hour= 2017011111 ;?"
??????? 其中生成了文件000000_0疹鳄,定義生成的文件按照^分隔拧略,所以采用:row?format?delimited?fields?terminated?by?'^'
??????? 在有安裝hive客戶端的crt上執(zhí)行以上語(yǔ)法,會(huì)在本地文件目錄/data8/demo中把查詢語(yǔ)句的數(shù)據(jù)生成不壓縮文件瘪弓,存儲(chǔ)到目錄中
???????? 注意查詢條件按照分區(qū)查詢垫蛆,這樣比較快,因?yàn)樵趆adoop中存儲(chǔ)hdfs文件是按照分區(qū)建立的目錄
》把文件裝載到db2
db2文件導(dǎo)入:
db2?"load?client?from /data8/demo/000000_0of?del?modified?by?coldel0x5E?codepage=1208?fastparse?anyorder?warningcount?1?messages/data8/log/load.log?insert?into?gzdb.test_hive_table NONRECOVERABLE"
或者不生成db2日志裝載:
db2?"load?client?from /data8/demo/000000_0of?del?modified?by?coldel0x5E?codepage=1208?replace?into?gzdb.test_hive_table NONRECOVERABLE"
》td裝載
td采用公司封裝的命令腺怯,在此不與論述