美文网首页数据大数据
hive导出数据到db2和td

hive导出数据到db2和td

作者: DJ_2017 | 来源:发表于2017-02-06 22:17 被阅读211次

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

    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采用公司封装的命令,在此不与论述

    相关文章

      网友评论

        本文标题:hive导出数据到db2和td

        本文链接:https://www.haomeiwen.com/subject/sdeuittx.html