zoukankan      html  css  js  c++  java
  • sqoop基础

    注意:sqoop在工作中的定位是会用就行

    参数:

    --target-dir       hdfs目标的目录

    --delete-target-dir 导入的目标目录如果存在则删除那个目录

    --num-mappers    相当于-m,并行导入时map task的个数

    --fields-terminated-by

    --query "$2" 'and $CONDITIONS;' 指定满足sql和条件的数据导入

    -m maptask的个数

    --merge-key 主键

    --incremental 导入模式 用来指定增量导入的模式

    sqoop导入导出NULL存储一致性问题

    Hive中的Null在底层是以"N" 来存储,而Mysql中的Null在底层就是null,为了保证数据两端的一致性,转化的过程中遇到null-string,null-non-string数据都转化成指定的类型,通常指定成"N".在导出数据时采用-input-null-string  "N"  --input-null-non-string "N" ;两个参数

    sqoop数据导出一致性问题

    1 场景1:如sqoop在导出到mysql时,使用4个map任务,过程中有2个任务失败,那此时mysql中存储了另外两个任务导入的数据,此时老板正好看到了这个报表的数据,而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入mysql,那后面的老板再次看报表数据,发现本次看到的和之前的不一致这是生成环境不允许的

    使用--stageing-table选项,将hdfs中的数据先导入到辅助表中,当hdfs中的数据导出成功后,辅助表中的数据在一个事务中导出到目标表中(也就是说这个过程要不完全成功,要不完全失败)

    为了能够使用staging这个选项,staging表在运行任务前或者是空的,要不就是用--clear-staging-table配置,如果staging表中有数据,并且使用了--clear-staging-table选项,sqoop执行导出任务前会删除staging表中所有的数据

    注意:--direct导入时staging方式是不可用的,使用了--update-key选项时staging方式也不能用

    案例

    sqoop export

    --connect url

    --username root

    --password 123456

    --table app_come

    --columns id,twatch...

    --fields-terminated-by " "

    --export-dir "/user/hive/warehouse/tmp.db/app_cme_{day}"

    --staging-table app_come

    --clear-staging-table

    --input-null-string '\N'

    --null-non-string '\N'

    2 设置map数量为1个

    多个map任务时,使用-staging-table方式,仍然可以解决数据一致性问题

    sqoop 底层运行的任务是什么?

    只有Map阶段,没有reduce阶段的任务

    Map task并行度设置大于1的问题?

    并行度导入数据的时候,需要制定那个字段进行切分,该字段通常是主键或者是自增长不重复的数值型字段,否则会报错

    import fail:No primary key could be found for table ....

    也就是说当map rask并行度大于1时,下面两个参数需要同时使用

    --split-by id 指定根据id字段进行切分

    --m n 指定mapbingxingdun个

  • 相关阅读:
    混jdon坛子的一些思考
    Jforum论坛安装
    自己对组件化模块的一点思路.
    自己对组件化模块的一点思路.
    总结(1)
    总结(1)
    Jforum论坛安装
    Windows 下 用 php 【mail()】函数发送邮件 (本地环境)
    使用TCP/IP协议实现聊天程序
    在vista上安装delphi7的解决方案
  • 原文地址:https://www.cnblogs.com/fengyouheng/p/15414362.html
Copyright © 2011-2022 走看看