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

sqoop的参数及初体验

基本命令

 常见的命令

公用参数:import

公用参数:数据库连接

公用参数:export

公用参数:hive

sqoop导入import

从RDBMS中以MySQL为例导出单表到HDFS,MySQL表中的每一行数据被视为HDFS中的一条记录所有记录都存储为文本数据。下面的语法格式将用于将数据导入HDFS。

sqoop import (generic-args) (import-args)

全量导入mysql表数据到HDFS

下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。

sqoop import \
--connect jdbc:mysql://ip地址:3306/数据库 \
--username 用户名 \
--password 密码 \
--delete-target-dir \
--target-dir HDFS路径 \
--table 表名\
--m 1 \
--fields-terminated-by '\t'

--delete-target-dir:如果路径存在就自动删除

--target-dir:可以用来指定导出数据存放至HDFS的目录;

--m:是--num-mappers的缩写,表示启动N个mapper任务并行,默认4

--fields-terminated-by '\t':来指定分隔符

量导入mysql表数据到HIVE

先将关系型数据的表结构复制到hive

sqoop create-hive-table \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--hive-table hive表名

备注:默认是false,即,如果目标表已经存在了,那么创建任务失败。

从关系数据库导入文件到hive中

sqoop import \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--hive-table hive表名
--hive-import \
--m 1
导入表数据子集(where过滤)

where可以指定从关系数据库导入数据时的查询条件。它执行在数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。

sqoop import \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--where "条件语句" \
--hive-table hive表名
--hive-import \
--m 1
增量导入

在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据每次都全部导入到hive或者hdfs当中去,这样会造成数据重复的问题。因此一般都是选用一些字段进行增量的导入,sqoop支持增量的导入数据,用于只导入比已经导入行新的数据行。其中,使用的参数为:

1、--check-column col      指定某一列

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。

注意:这些被指定的列的类型不能使任意字符类型,如char、varchar等类型都是不可以的,同时-- check-column可以去指定多个列。

2、--incremental mode   (append / lastmodified 两种模式

增量导入数据分为两种方式:

  1. append:基于递增列的增量数据导入,必须为数值型
  2. lastmodified:基于时间列的数据增量导入,必须为时间戳类型

3、--last-value value   (指定大于的值)

指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一值

append增量导入 (将mysql数据库表的id>3的值筛查出来并存放进HDFS路径)


sqoop import \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--m 1 \
--target-dir HDFS路径 \
--incremental append \
--check-column id \
--last-value 3  // 同步时不包含词条数据


lastmodified增量导入 (将mysql表last_modified 字段大于等于"2023-11-18 20:52:02"的数据)


sqoop import \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--target-dir HDFS路径 \
--m 1 \
--check-column last_modified \
--incremental lastmodified \
--last-value "2023-11-18 20:52:02"   // 同步时包含此条数据

sqoop导出export

默认情况下,sqoop export将每行输入记录转换成一条INSERT语句,添加到目标数据库表中。如果数据库中的表具有约束条件(例如,其值必须唯一的主键列)并且已有数据存在,则必须注意避免插入违反这些约束条件的记录。如果INSERT语句失败,导出过程将失败。此模式主要用于将记录导出到可以接收这些结果的空表中。通常用于全表数据导出。

导出时可以是将Hive表中的全部记录或者HDFS数据(可以是全部字段也可以部分字段)导出到Mysql目标表。

sqoop export \
--connect jdbc:IP地址:3306/库名\
--username 用户名\
--password 密码 \
--table 表名\
--export-dir HDFS文件路径

Sqoop的缺点

1、Sqoop属于Hadoop生态圈中一员,和Hadoop深度的绑定,Sqoop底层与MapReduce又是强耦合,不是解耦的,现在spark,flink技术的使用,使得sqoop的应用场景变少

2、目前已经从Apache下架,不再更新新版本

3、由于停更,只支持常见的RDBMS如MySQL、Oracle等和常见的Hadoop生态圈的HDFS、Hive等,对新产出的数据分析工具几乎没有相关联

http://www.xdnf.cn/news/75367.html

相关文章:

  • 【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
  • chromedp 反反爬设计方案
  • 美乐迪电玩大厅加载机制与 RoomList 配置结构分析
  • JavaScript之深浅拷贝
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • 【安装部署】Linux下最简单的 pytorch3d 安装
  • 安宝特案例 | AR如何大幅提升IC封装厂检测效率?
  • C#进阶学习(十)更加安全的委托——事件以及匿名函数与Lambda表达式和闭包的介绍
  • 【架构】ANSI/IEEE 1471-2000标准深度解析:软件密集型系统架构描述推荐实践
  • 【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)
  • 4.21—4.22学习总结 JavaWeb:HTML-CSS
  • Laravel 对接阿里云 OSS 说明文档
  • ecovadis评级范围,如何拿到ecovadis评级高分
  • K8S探针的应用
  • 【教程】安装 iterm2 打造漂亮且高性能的 mac 终端
  • k8s-1.28.10 安装metrics-server
  • 模拟实现strncat、qsort、atoi
  • AR/VR衍射光波导性能提升遇阻?OAS光学软件有方法
  • 如何将当前文件夹及其子文件夹下的所有word提取到一个excel里
  • 新能源汽车充电桩:多元化运营模式助力低碳出行
  • CoinNexus Chain 推出泰利风暴,开启 Web3.0 智能金融元宇宙科技新时代
  • 数字空间与VR有什么关系?什么是数字空间?
  • 全能 Sui 技术栈,构建 Web3 的未来
  • Go语言之sync包 WaitGroup的使用和底层实现
  • NVIDIA 自动驾驶技术见解
  • 基于监督学习的图像分类系统优化
  • Oracle--PL/SQL编程
  • 蓝桥杯常考的找规律题
  • Unity Paint In 3D 入门
  • (51单片机)LCD显示温度(DS18B20教程)(LCD1602教程)(延时函数教程)(单总线教程)