Sqoop增量导入导出总结

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  • Sqoop做为关系型数据库RDBMS和大数据平台(HDFS,Hive,Hbase等)导入导出工具,如果不熟悉其参数作用,使用起来各种问题,本文作为博主对Sqoop的实践作出一定的总结,如有错误,仅供参考。

Sqoop Job

  • Sqoop job 的是给使用者提供一个封装sqoop job的功能,其作用是可以自动更新job 的meta信息,让增量导入时指定的last-value自动被更新记录,不用额外的使用其他手段记录信息。

  • Sqoop job操作:

      创建job
      sqoop job --create <job-id> -- [import|export] 
      #注意,创建导入导出job ,最后一个'--'后面要加一个空格
      查看job
      sqoop job --show <job-id>
      #查看job的详细信息
      查看job列表
      sqoop job --list
      删除job
      sqoop job --delete <job-id>
      执行job
      sqoop job --exec <job-id>
    
  • Sqoop ‘- -password /- -password-file’ 参数

      sqoop支持俩种密码的输入,一种直接传递(--password),一种使用文件(--password-file),直接在shell 上填写密码,sqoop会提示不要在命令行直接使用密码。
      创建sqoop job时,如果直接在命令行使用密码(--password),是无效的,当你执行job时,依然会让你重新输入密码。
    
  • 不输入密码的俩种方式:

      1.修改sqoop-site.xml
       <property>
          <name>sqoop.metastore.client.record.password</name>
          <value>true</value>
          <description>If true, allow saved passwords in the metastore.
          </description>
        </property>
        此种方式在第一次输入密码后,以后再执行就不需要输入密码
       
      2.使用--password-file 指定密码文件,文件可以是本地文件系统,也可以是HDFS文件
      echo -n 'password' > filename.password
      -n 参数表示不换行输出,当你的密码文件格式不正确时,执行job时会报错
      java.sql.SQLException: Access denied for user 'xxx'@'xxxx' (using password: YES)
    

增量导入

  • 限于篇幅,sqoop全量导入导出,这里就不再介绍

  • sqoop使用–incremental参数实现增量导入,有俩种模式:append和lastmodified

  • Append模式

      必须参数:
      		--check-column <column-name> #检查列,sqoop根据指定列来查询出大于last-value值的数据,实现增量导入,可以为自增的列,如id,也可以是自增的时间类型
      		--incremental append #指定append模式
      		--last-value <init-value>
      		此种模式,大于last-value的值会被追加到目标数据中,如果指定的是时间类型,那么之前数据被修改后,时间变动导致的增量会被追加,因此会有数据重复,一般指定自增的id。
      eg:
      sqoop job --create job-id \
      -- import \
      --connect jdbc-url \
      --username username \
      --password-file password-file-path \
      --table table-name \
      --num-mappers 2 \
      --split-by id \
      --hive-import \
      --hive-database db \
      --hive-table table-name \
      --check-column id \
      --incremental append \
      --last-value 0 \
    

    APPEND 模式支持导入到HDFS和Hive

  • Lastmodified模式

  • lastmodified需要指定一个更新的时间列,会将大于指定时间列的值增量导入到目标数据源,被更新的数据行也会被导入,导入方式又分为append和merge-key俩种模式,需要注意的是,此种增量导入方式不支持直接导入到Hive

      必须参数:
      	--target-dir hdfs-path # HDFS路径
      	--check-column <column-name> #检查列,sqoop根据指定列来查询出大于last-value值的数据,实现增量导入,一般为日期时间类型
      	--incremental  lastmodified #指定lastmodified模式
      	--last-value <init-value>
      	--append 或--merge-key <column> 
      eg:
      sqoop job --create job-id \
      -- import \
      --connect jdbc-url \
      --username username \
      --password-file password-file \
      --table table \
      --columns columns \
      --num-mappers 1 \
      --target-dir target-dir \
      --fields-terminated-by '\t' \
      --check-column check-column \
      --incremental lastmodified \
      --last-value "1970-01-01 08:00:00" \
      --merge-key id
    

指定append时,更新和新增的数据会被追加到目标数据,指定merge-key时,更新的数据会和之前数据按照指定的key合并生成最新的数据,新增的数据会被追加,指定的key一般为主键,需要注意的是,如果target-dir 目录存在,那么该sqoop job会重新启动一个MapReduce作业按照merge-key更新之前的数据生成新的数据集,新生成的文件数量不受num-mappers参数影响

增量导出

  • Sqoop 增量导出基于hdfs数据,使用–export-dir指定,实现增量导出的关键是–export-dir 指定路径的数据是否是增量的,可以使用以下方式:

      INSERT OVERWRITE TABLE/DIRECTORY 'table_name/directory_anme' SELECT...
    
  • 增量导出也有俩种模式,allowinsert和updateonly,使用–update-mode 参数进行指定,allowinsert模式是对已存在的数据进行更新,新增的数据进行追加,前提是目标表存在主键,updateonly模式(默认)仅允许对存在的数据进行更新,更新指定的key,用–update-key参数指定

      必要参数:
      	--update-key <key>
      	--update-mode <allowinsert/updateonly>
      
      eg:
      sqoop export 
      --connect jdbc-url \
      --username username \
      --password password \
      --table <targetTable> \
      --fields-terminated-by ‘,’ \
      --update-key key \
      --update-mode  allowinsert \
      --export-dir export-dir
    
Sqoop: 环境搭建、实例及概念 简介Sqoop是一个用于在外部结构化数据与Hadoop之间导入导出数据的工具。 Apache Sqoop is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases. Sqoop: 是一个 阅读详情

相关推荐

Sqoop

一、Sqoop介绍 1、Sqoop:SQL-to-Hadoop 传统数据库与Hadoop间数据同步工具 利用Mapreduce分布式批处理,加快了数据传输速度,保证了容错性。 2、sqoop import 原理:从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map...

Mookle的博客 394

Sqoop--全量/增量导入/导出

Sqoop支持两种方式的全量数据导入增量数据导入,同时可以指定数据是否以并发形式导入。下面依次来看: 一、MySQL-->hdfs,Hive 1、全量数据导入 全量数据导入就是一次性将所有需要导入的数据,从关系型数据库一次性地导入到Hadoop中(可以是HDFS、Hive等)。 方法1(直接导入):将mysql数据直接导入hive表中 #直接导入适用于将单个表中部分数据或所有数......

. 7311

sqoop增量导入

sqoop增量导入分为多种模式,有append和lastmodified两种模式。需要应用的主要sqoop参数有:–check-column:指定增量导入的依赖字段,通常为自增的主键id或者时间戳–incremental:指定导入的模式(append或lastmodified)–last-value:指定导入的上次最大值也就是这次开始的值 Append模式 1.建立自增主键表:create tab

weixin_39216383的博客 1930

sqoop参数详解(全量、增量导入导出

从RDBMS到HIVE: --connect jdbc:oracle:thin:@//192.168.156.111/test --username test --password test --query select * from it.t_test where inserttime >= to_date('${date1}','yyyy-mm-dd') and inserttime...

清平乐的技术专栏 5135

sqoop增量导出到mysql

全量导出 HQL示例:insert overwrite directory ‘/user/root/export/test’ row format delimited fields terminated by ‘,’ STORED AS textfile select F1,F2,F3 from ; SQOOP脚本:sqoop export --connect jdbc:mysql://loca...

qq_15875901的博客 1254

Sqoop--增量导出

增量导出1、准备测试数据:Mysql中执行2、增量导出增量导出方式一:updateonly【默认】==方式二:allowinsert【一般都使用这种模式】== 1、准备测试数据:Mysql中执行 CREATE TABLE `tb_url` ( `id` int(11) NOT NULL, `url` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2、增量导出 增量导出 例如 分析

qq_46893497的博客 551

Sqoop全量及增量导入导出实现

1 、Sqoop导入导出导入: RDBMS -----> Hadoop平台 导出: Hadoop平台 -----> RDBMS 2 、Sqoop的重点是写导入导出的命令 3 、Sqoop的底层是没有Reduce的MRSqoop这是机械性将数据源的数据一条条进行搬移,不需要对数据做额外的聚合,所以不需要Reduce。

yqqの博客 498

sqoop增量导入hive_Sqoop 增量导入导出及Job操作示例

增量导入递增列的增量导入append# 第一次导入[root@node222 ~]# /usr/local/sqoop-1.4.7/bin/sqoop import --connect jdbc:mysql://192.168.0.200:3306/sakila?useSSL=false --table actor --where "actor_id < 50" --usernam...

weixin_39676930的博客 518

sqoop增量导出mysql_sqoop定时增量导入导出

sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有node上的sqoop都可以运行同一个job一、sqoop的配置文件在sqoop.site.xml中:1、sqoop.metastore.server.location本地存储路径,默认在tmp下,改为其他路径2、sqoop.metastore.server.portmetastore service...

weixin_36152359的博客 217

Sqoop实现增量导入导出数据到HDFS及Hive

一. Mysql数据导入HDFS上. 1. 全量导入: 将mysql表中全部数据都导入HDFS,如果HDFS中存在这个目录的话就会报错,默认存储的HDFS目录是  /user/root/XXX. bin/sqoop  import       (在sqoop的安装目录内,import表名是导入) --connect jdbc:mysql://192.168.52.130:3306/user...

weixin_43048871的博客 2285

Sqoop 增量导入导出及Job操作示例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34254823的博客 542

sqoop定时增量导入导出

  sqoop定时增量导入 2013-11-06 14:23 4553人阅读 评论(0) 收藏 举报 sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有node上的sqoop都可以运行同一个job 一、sqoop的配置文件在sqoop.site.xml中:     1、sqoop.metastore.server.locatio...

weixin_33941350的博客 233

数仓工具:Sqoop

Sqoop 是一个数据库数据导入导出工具Sqoop 即 sql + hadoopSqoop执行时,底层使用的MR中的map,所以输出文件的名字都是part-msqoop底层默认开启4个map任务,所以如果不指定的话就默认有四个文件sqoop分割也不是按照平均分割的,而是根据主键的值,除以 4 份 (默认分割四个文件)根据每一份的跨度进行文件中值的存入Sqoop的。也就是说Sqoop导入和导出功能是通过基于(只有map)的MapReduce作业实现的。

qq_62984376的博客 1470

大数据Sqoop(一) --- Sqoop简介,安装和配置,MySQL数据的导入导出到HDFS,Hive,HBase,Sqoop Job,增量导入

一、Sqoop简介[1.4.6版本] ------------------------------------------------------------ 1.RDBMS 和 HDFS之间进行数据导入导出的工具 2.将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定...

xcvbxv01的博客 348

sqoop导入导出语句知识点:导出数据,导入数据,全量导入增量导入

前置 在刚开始发展的时候,hadoop和sqoop是绑定在一起的,后来发展的原因,sqoop就独立出去了 目前比较稳定的版本是1.4.6或者1.4.7版本,这个版本的sqoop要和hadoop 2.x,hive 1.x, hbase 1.x版本配合使用 但是我用的是hadoop 3.1.3和hive 2.3.5版本的,因此sqoop 1.4.6的版本就有些不支持 操作类型 操作类型的 参考方向 hadoop(hdfs|hive|hbase) – export --> RDBMS(mysql|oracl

weixin_49180684的博客 765

Sqoop-命令】Sqoop相关了解及命令

sqoop是apache旗下一款Hadoop和关系数据库服务器之间传送数据的工具。简单来说,sqoop就是一款数据导入导出工具。导入:从RDBMS到hadoop生态圈的过程。导出:从hadoop生态圈到RDBMS。底层:将导入导出命令翻译成MR任务,执行在YARN平台上,底层是对MR的输入和输出做了定制化操作。【Sqoop-命令】Sqoop相关了解及命令

weixin_53543905的博客 1616

[998]sqoop使用入门

文章目录sqoop基础基本概念基本架构sqoop安装sqoop使用导入数据到hdfs导入数据到hive导入数据到hbase导出数据 引言 sqoop是apache旗下,用于关系型数据库和hadoop之间传输数据的工具,sqoop可以用在离线分析中,将保存在mysql的业务数据传输到hive数仓,数仓分析完得到结果,再通过sqoop传输到mysql,最后通过web+echart来进行图表展示,更加直观的展示数据指标。 sqoop基础 基本概念 如下图所示,sqoop中有导入和导出的概念,参照物都是hadoop

周小董 340

sqoop导入导出工具的使用以及通过java代码连接linux,远程执行shell命令

1、sqoop是apache开源提供的一个数据导入导出的工具,从关系型数据库导入到hdfs,或者从hdfs导出到关系型数据库等等 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统; 导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等 **原理:**通过MR的inputformat和outputformat来实现数据的输入与输出,底层执行的全部都是MR的任务,只不过这个mr只有map阶段,没有reduce阶段 说白了只是对数据进行抽取,从

Carina_____的博客 595
上一篇: MySQL知识点总结
下一篇: Hive调优相关总结
banana`
博客等级 码龄9年 288粉丝 45原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值