hive導出數據到db2和td

公司近期搭建了hadoop集群,改造前后的體系架構如下:

http://www.lxweimin.com/writer#/notebooks/9498314/notes/8936965/writing

?????? 從圖中可以看出用hive庫,替代了db2和td中的cdr層,也就是業務處理邏輯層,之后再把匯總數據抽取到db2和td,在此聊聊抽取到兩個庫中的用法。

??????? 由于本次抽取需要生成落地文件,所以并沒有用sqoop直接抽取到傳統的數據庫,而是采用insert?overwrite locat導出文件到本地系統,之后load裝載到db2

》抽取hive匯總層數據,生成文件

???? ? insert overwrite local在沒有設置hive配置的時,導出的文件是壓縮文件,所以這里需要添加配置,語法如下:

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上執行以上語法,會在本地文件目錄/data8/demo中把查詢語句的數據生成不壓縮文件,存儲到目錄中

???????? 注意查詢條件按照分區查詢,這樣比較快,因為在hadoop中存儲hdfs文件是按照分區建立的目錄

》把文件裝載到db2

db2文件導入:

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采用公司封裝的命令,在此不與論述

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容