• 创建function实现hive表结果导出到mysql


    1. 创建临时function (这里两个包都是hive自带的,不需要自己开发的,可以根据名称查找对应的版本)

    add jar /opt/local/hive/lib/hive-contrib-2.3.3.jar;
    add jar /opt/local/hive/lib/mysql-connector-java-5.1.35-bin.jar;
    
    CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput';

    2. dboutput使用方法

    select dboutput(jdbc数据库链接,  用户名, 密码, sql语句, hive字段值) from hive表

    准备一张hive表记录如下,然后在mysql中创建相同字段的表.

    根据上面到规则,完整的hive脚本如下, 保存到script.q文件中:

    --定义临时function,用于导出到mysql
    add jar /opt/local/hive/lib/hive-contrib-2.3.3.jar;
    add jar /opt/local/hive/lib/mysql-connector-java-5.1.35-bin.jar;
    CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput';
    
    --查询hive并将结果写入mysql
    select dboutput('${url}','${username}','${password}',
    'INSERT INTO dm_index_pv_uv
    (dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end) 
    VALUES(?,?,?,?,?,?,?,?,?)',
    dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end
    )from dw_stg.tmp_1 where dt=${dt};

    这里只能insert into记录,无法删除。下面这种写法是错误的

    select dboutput('${url}','${username}','${password}',
    'delete from dm_index_pv_uv where dt=${dt};##这行错误!!
    INSERT INTO dm_index_pv_uv
    (dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end) 
    VALUES(?,?,?,?,?,?,?,?,?)',
    dt,tenantcode,deviceid,bourse_week,week_begin,week_end, yrmm, month_begin, month_end
    )from dw_stg.tmp_1 where dt=${dt};

    使用hive -f脚本执行。

    #!/bin/sh
    echo 'app2mysql'
    
    hive -f script.q 
    -hivevar dt=20181201 
    -hivevar url=jdbc:mysql://dwdev-name2/bigdata 
    -hivevar username=mysql 
    -hivevar password=123456

    执行过程如下:

    查看mysql 中记录:

    一般数据量不大的情况下,可以直接使用,还是比较方便的。省去了使用sqoop或者自己开发的麻烦。

  • 相关阅读:
    linux(unix)下.tar.gz解压
    linux 实验室
    Liferea 1.0.15
    编造机中鼠标无法应用标题问题解答
    GnuCash 1.9.8
    KDE 走向跨平台, 支持 Windows 和 Mac OS X
    KDVDCreator:创立视频 VCD、SVCD 和 DVD
    digiKam 0.9.3 颁布公布
    Sysinfo 0.7beta4
    KDE 4.1 特性及公布筹划
  • 原文地址:https://www.cnblogs.com/30go/p/10101607.html
Copyright © 2020-2023  润新知