Neal's Space
  • Introduction
  • Algorithm
    • 数学基础
    • Normal
      • 一致性哈希分布
      • A star 寻路
      • 蓄水池抽样 Reservoir Sampling
    • Machine Learning
      • k-近邻算法
      • k-平均演算法
      • kd-Tree算法
      • TF-IDF 特征加权
      • 机器学习模型评价
      • 数据的归一化和标准化
      • 线性回归 - "模型之母"
      • 逻辑回归 - "出场率最高算法"
      • 决策树
  • Programming Language
    • Java
      • Lombok
      • 多数据源分页查询拼接订单
      • 集群 分布式 微服务
      • 反射
      • JAVA类加载器
      • JVM内存
      • Garbage Collection(JVM的垃圾回收机制)
      • Synchronized
      • Java跨域访问
    • Scala
      • Scala使用
  • MySQL
    • MySQL事务
    • MySQL插入多条数据时遇到的问题
    • MySQL经典50题
  • Linux
    • Linux
      • Vim
      • Ubuntu换源
      • Linux内存
    • Docker
      • Docker
      • Docker容器
      • Docker镜像
      • Docker创建本地镜像
  • Data
    • DataWarehouse
      • Sqoop
      • 多维计算
    • Hadoop
      • Hadoop
        • Docker运行Hadoop
      • Hdfs
        • HDFS块丢失过多导致进入安全模式
        • NameNode内存解析
        • HDFS的Router-Based Federation
    • Hive
      • Hive安装配置
      • Hive使用DDL
      • Hive引擎Tez
      • Sqoop与Hive出现的问题
      • Hive与Hook
    • Flume
    • Hbase
      • Hbase安装配置
      • Hbase的Bloom Filters
    • Spark
      • Spark基础
      • Spark SQL
      • Spark Streaming
      • Spark On Yarn
      • Tuning Spark 数据序列化和内存调整
      • Tuning Spark Job
    • Kafka
      • Kafka文件存储
      • 偏移量提交 与 分区再平衡
    • Flink
      • Flink遇到的坑
Powered by GitBook
On this page
  • 增量导入
  • 核心参数
  • 使用
  • 问题

Was this helpful?

  1. Data
  2. DataWarehouse

Sqoop

增量导入

sqoop import

可以进行增量导入,在业务处理中经常被使用。

核心参数

Argument

Description

--check-column</br>(col)

指定导入时需要检查的列,使用此列作为判断数据是否为增量数据</br>(这些列的类型不能为CHAR/NCHAR/VARCHAR/VARNCHAR/ LONGVARCHAR/LONGNVARCHAR)</br>可以指定多个列

--incremental</br>(mode)

指定如何判断行为新的数据</br>有两种模式append和lastmodified

--last-value</br>(value)

指定上次导入数据时检查列的最大值(最新值)

使用

append

当表中数据会有一个字段在新行中是不断增加的值时(例如自增键),适合使用append模式。Sqoop将导入--check-column指定的列大于--last-value指定值的行。

Argument

Description

--incremental append

基于递增列的增量导入

--check-column

递增列(非字符)

--last-value

阈值(导入大于阈值的行)

lastmodified

当源表的行可能会更新时,应该使用lastmodified模式。此类更新将会保存上次修改的列设置为当前的时间戳,要求原表中有可以指定时间戳的字段。Sqoop将导入--check-column列保存的时间戳比--last-value指定的时间戳更新的时间戳的行。

在增量导入后,应该将打印到屏幕上的--last-value的值记录下来用于以后的增量导入。当运行后面的导入时,应该指定--last-value来确保只导入新增或者更新的数据。可以通过将增量导入作为一个 saved job 来自动处理此问题,这是执行循环增量导入的首选机制。

可以制定 --merge-key 参数以保证将后续新的记录与原有的记录合并。

Argument

Description

--incremental lastmodified

基于时间列的增量导入

--check-column

递增列(非字符)

--last-value

阈值(导入大于等于阈值的行)

--merge-key

合并列(主键,合并键值相同的记录)

问题

为了防止数据库被Sqoop读取数据太多抗不住压力,所以一般从备库中抽取数据。

通过-m可以设置导入数据的任务数量,指定了-m表示为并发导入,这时候就必须指定--split-by参数,明确根据哪一列进行哈希分片,这个列应根据实际情况慎重选择,以避免产生数据倾斜。

空值替换问题

  • --null-string:string类型的空值替换符(hive中null用\n表示)

  • --null-non-string:非string类型空值的替换符

PreviousDataWarehouseNext多维计算

Last updated 5 years ago

Was this helpful?