hadoop-Apache-Sqoop

Apache Sqoop简单笔记

  • sqoop 安装验证

    bin/sqoop list-databases \
    --connect jdbc:mysql://localhost:3306/ \
    --username root --password 123456
    

    注意事项:1命令携带参数必须出现在一行中,若换行就意味着自动提交执行,可通过\表示未结束。

  • 全量导入数据到hdfs

    • 1mysql的地址尽量不要使用localhost 请使用ip或者host

    • 2如果不指定 导入到hdfs默认分隔符是 “,”

    • 3可以通过-- fields-terminated-by '\ t‘ 指定具体的分隔符

    • 4如果表的数据比较大 可以并行启动多个maptask执行导入操作,如果表没有主键,请指定根据哪个字段进行切分

      bin/sqoop import \
      --connect jdbc:mysql://node01:3306/userdb \
      --username root \
      --password 123456 \
      --target-dir /sqoopresult214 \
      --fields-terminated-by '\t' \
      --split-by id \
      --table emp --m 2
      
  • 导入表数据子集(query查询)

    使用 query sql 语句来进行查找不能加参数--table ;
    并且必须要添加 where 条件;
    并且 where 条件后面必须带一个$CONDITIONS 这个字符串;
    并且这个 sql 语句必须用单引号,不能用双引号;
    
  • 增量数据的导入

    • 所谓的增量数据指的是上次至今中间新增加的数据
    • sqoop支持两种模式的增量导入
      • append追加 根据数值类型字段进行追加导入 大于指定的last-value
      • lastmodified 根据时间戳类型字段进行追加 大于等于指定的last-value
        • 注意在lastmodified 模式下 还分为两种情形:append merge-key
  • 关于lastmodified 中的两种模式:

    • append 只会追加增量数据到一个新的文件中 并且会产生数据的重复问题

      因为默认是从指定的last-value 大于等于其值的数据开始导入

    • merge-key 把增量的数据合并到一个文件中 处理追加增量数据之外 如果之前的数据有变化修改

    也可以进行修改操作 底层相当于进行了一次完整的mr作业。数据不会重复。

  • 数据导出操作

    • 注意:导出的目标表需要自己手动提前创建 也就是sqoop并不会帮我们创建复制表结构
    • 导出有三种模式:
      • 默认模式 目标表是空表 底层把数据一条条insert进去
      • 更新模式 底层是update语句
      • 调用模式 调用存储过程
    • 相关配置参数
      • 导出文件的分隔符 如果不指定 默认以“,”去切割读取数据文件 --input-fields-terminated-by
      • 如果文件的字段顺序和表中顺序不一致 需要–columns 指定 多个字段之间以","
      • 导出的时候需要指定导出数据的目的 export-dir 和导出到目标的表名或者存储过程名
      • 针对空字符串类型和非字符串类型的转换 “\n”
  • 更新导出

    • updateonly 只更新已经存在的数据 不会执行insert增加新的数据
    • allowinsert 更新已有的数据 插入新的数据 底层相当于insert&update
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqoop-1.4.7.bin__hadoop-2.6.0源码包是Apache Sqoop开源项目的一个版本,用于实现Hadoop和关系型数据库之间的数据传输。 Sqoop是一个用于将Hadoop生态系统中的数据与传统关系型数据库之间进行导入和导出的工具。它可以处理大规模的数据传输,帮助用户在Hadoop和关系型数据库之间建立数据桥梁。通过Sqoop,用户可以将数据从MySQL、Oracle、PostgreSQL等数据库中导入到Hadoop中进行分析和处理,也可以将结果从Hadoop导出到关系型数据库中进行后续处理。 该源码包中包含了Sqoop 1.4.7版本的二进制文件以及支持Hadoop 2.6.0的相关依赖文件。源码包可以用于构建和部署Sqoop应用程序,也可以用于进行二次开发和定制。 Sqoop-1.4.7版本在此源码包中提供了对Hadoop 2.6.0的支持,并且修复了一些之前版本中存在的问题和bug,提高了稳定性和性能。 使用Sqoop进行数据传输可以帮助用户实现数据的多样化处理,例如将用户在关系型数据库中的数据导入到Hadoop中进行大数据分析,或者将Hadoop中的计算结果导出到关系型数据库中进行进一步的报表生成。通过Sqoop,用户不需要编写复杂的数据转换和传输代码,简化了数据传输的过程,提高了工作效率。 通过深入研究Sqoop的源码,可以更好地理解Sqoop的工作原理和内部机制,并且可以基于源码进行二次开发和功能定制,以满足特定的业务需求。 总之,Sqoop-1.4.7.bin__hadoop-2.6.0源码包为用户提供了一个方便的方式来使用Sqoop,并且可以进行二次开发和定制,以满足各种数据传输需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值