zoukankan      html  css  js  c++  java
  • sqoop导出笔记

    背景信息

    SQOOP支持直接从Hive表到RDBMS表的导出操作,也支持HDFS到RDBMS表的操作,
    当前需求是从Hive中导出数据到RDBMS,有如下两种方案:

    从Hive表到RDBMS表的直接导出:

    该种方式效率较高,但是此时相当于直接在Hive表与RDBMS表的数据之间做全量、增量和更新对比,当Hive表记录较大时,或者RDBMS有多个分区表时,无法做精细的控制,因此暂时不考虑该方案。

    从HDFS到RDBMS表的导出:

    该方式下需要先将数据从Hive表导出到HDFS,再从HDFS将数据导入到RDBMS。虽然比直接导出多了一步操作,但是可以实现对数据的更精准的操作,特别是在从Hive表导出到HDFS时,可以进一步对数据进行字段筛选、字段加工、数据过滤操作,从而使得HDFS上的数据更“接近”或等于将来实际要导入RDBMS表的数据。在从HDFS导入RDBMS时,也是将一个“小数据集”与目标表中的数据做对比,会提高导出速度。

    举例

    HIVE导出到HDFS
    ./hive -e "insert overwrite directory '/user/sqoop/hive_export/xpydw/rpt_dispy_job_stats' row format delimited fields terminated by '01' null defined as '' stored as textfile select date_id,status,owner,category_name,res_host,job_cnt,error_times from xpydw.rpt_dispy_job_stats"
    
    HDFS导出到mysql
    ./sqoop export -m 1 
    --outdir /home/hadoop/bigdata/sqoop/outdir 
    --fields-terminated-by "01" 
    --null-non-string ''
    --null-string '' 
    --connect jdbc:mysql://hupz.cn:3306/xpydw?characterEncoding=UTF-8 
    --username dwopr --password * 
    --table 'rpt_dispy_job_stats_sqp' 
    --columns date_id,status,owner,category_name,res_host,job_cnt,error_times 
    --export-dir /user/sqoop/hive_export/xpydw/rpt_dispy_job_stats
    
    合并或替换目标表
    alter table rpt_dispy_job_stats rename to rpt_dispy_job_stats_sqp_tmp;
    alter table rpt_dispy_job_stats_sqp rename to rpt_dispy_job_stats;
    alter table rpt_dispy_job_stats_sqp_tmp rename to rpt_dispy_job_stats_sqp;
    
  • 相关阅读:
    巧用table的rules属性设置表格的边框掩饰。。。
    JS日期和时间
    onchange事件验证文本框格式,不正确光标返回原文本框,这个js怎么写?
    简易万用表
    在单片机中的空函数
    地感线圈的讲究
    全桥片
    这个当单片机程序怎么会不停的通过串口发数据,设置波特率为9600,但是串口软件接受数据不对(初学者,请高手指教)
    今天开博
    关于二极管
  • 原文地址:https://www.cnblogs.com/hupingzhi/p/12739418.html
Copyright © 2011-2022 走看看