hive导出数据到db2和td

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

《hive导出数据到db2和td》 http://www.jianshu.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采用公司封装的命令,在此不与论述

    原文作者:DJ_2017
    原文地址: https://www.jianshu.com/p/28822f0ca292
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞