当前位置: 首页 > news >正文

Sqoop 学习

参考视频

        大数据Sqoop教程丨从零开始讲解大数据业务及数据采集和迁移需求_哔哩哔哩_bilibili

介绍

Sqoop是Hadoop生态体系和RDBMS(关系型数据库)体系之间传送数据的一种工具

        Hadop生态系统:HDFS,Hbase,Hive等

        RDBMS包括:Mysql,Oracle,DB2等

        Import:数据导入, RDBMS(DBinputFormat) -> Hadoop(TestoutputFormat)

        export:  数据导出,Hadoop(DBoutputFormat) -> RDBMS(TestInputFormat)

机制

        Sqoop工作机制是将导入或导出命令翻译成MapReduce程序来实现,在翻译出的MapReduce中主要对ImportFormat和OutFormat进行定制

安装部署

前置条件:

安装java,hadoop

配置文件(基于sqoop1.4.6):

上传,解压,修改配置

cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.shexport HADOOP_CONFIG_HOME=/export/../hadoop-2.7.5
export HADOOP_MAPRED_HOME=/export/../hadoop-2.7.5
export HIVE_HOME=/export/../hive

加入mysql的jdbc驱动包

cp /hive/lib/mysql-connector-java-5.1.32.jar $SQOOP_HOME/lib/

验证

bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root --password 123456\: 一行过长,用\表示一行还没有完,等待

sqoop导入

bin/sqoop import \
--connect jdbc:mysql://ip:port/dbName \
--username roor \
--password 123456\
--delete-target-dir \ (如果target-dir 的路径存在,提前删除)
--target-dir /sqoopresult \ (可以用来存放导出数据存放到HDFS的目录)
--table myTableName \
--m 1 \ (可以理解成maptask ,并行度,表有主键根据主键分,没有主键需要指定字段)
--split-by id \ (根据什么字段切割,最好是数字字段)
--fields-terminated-by '\t' (指定分隔符,还可以,等,默认,)条件导入
--where "age>12" (条件查询导入,可改成每天时间,则是每日导出)
--query 'select id,name,age from myTableName where age>18 and $CONDITIONS' (1 不加--table,2 必须有where条件, 3必须加上$CONDITIONS, 4 sql必须是单引号)增量导入
--check-column(col)  (指定列,一般是主键或者时间戳,自增长不重复)
--incremental(mode)  (append:追加 lastmodified:最后的修改时间)
--last-value(value)  (指定上次导入后判断的最大值,也可以自己指定某一个值)
--merge-key (col)(append模式下可以合并文件,不会每次导入都在hdfs里新增一个文件.除了追加合并外,如果之前的数据有修改也可以进行修改操作,且数据不会重复)
eg:
--check-column id
--incremental append
--last-value 1205 
--merge-key id (追加,id>=1205的数据)
--check-column create_time
--incremental lastmodified
--last-value '2020-02-01 15:00:00' (追加,大于整个时间的数据)

sqoop导出

目标表必须存在数据库当中

导出的三种模式

1 默认,执行insert语句,插入到表里

2 更新模式,sqoop将生成UPDATE置换数据库中现有记录的语句

3 调用模式,sqoop将为每条记录场景一个存储过程调用

待补充

参考文档:

Sqoop简介以及使用-CSDN博客

相关文章:

  • pytorch 函数整理
  • Python 进行把图片转换为pdf
  • 设计模式前置了解uml图
  • 小波散射网络及其应用
  • Sklearn交叉验证
  • 捍卫数据保护:预防和缓解.mallox勒索病毒的威胁
  • Lwip之TCP服务端示例记录(1对1)
  • RHEL9 DNF/YUM仓库管理软件包
  • 【More Effective C++】条款24:了解虚函数的成本
  • day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车)
  • springboot单体项目链路日志跟踪及接口耗时
  • Sklearn线性回归
  • WebSocket:实现客户端与服务器实时通信的技术
  • 考研复习C语言初阶(4)+标记和BFS展开的扫雷游戏
  • 嵌入式学习37-TCP并发模型
  • SegmentFault for Android 3.0 发布
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译] React v16.8: 含有Hooks的版本
  • 【5+】跨webview多页面 触发事件(二)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【剑指offer】让抽象问题具体化
  • Codepen 每日精选(2018-3-25)
  • gops —— Go 程序诊断分析工具
  • Median of Two Sorted Arrays
  • mysql常用命令汇总
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • php的插入排序,通过双层for循环
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于HAProxy的高性能缓存服务器nuster
  • 普通函数和构造函数的区别
  • 前端攻城师
  • 前端知识点整理(待续)
  • 前嗅ForeSpider采集配置界面介绍
  • 如何进阶一名有竞争力的程序员?
  • 使用 Docker 部署 Spring Boot项目
  • 使用parted解决大于2T的磁盘分区
  • 数据科学 第 3 章 11 字符串处理
  • 通过几道题目学习二叉搜索树
  • 无服务器化是企业 IT 架构的未来吗?
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​Python 3 新特性:类型注解
  • #ifdef 的技巧用法
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $L^p$ 调和函数恒为零
  • (2)Java 简介
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)fgets与fputs函数详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)丶RabbitMQ的六大核心
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (数据结构)顺序表的定义
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)linux自定义开机启动服务和chkconfig使用方法