sqoop

news/2025/1/14 22:11:32/

一、bg

可以在关系型数据库和hdfs、hive、hbase之间导数
导入:从RDBMS到hdfs、hive、hbase
导出:相反

sqoop1 和sqoop2 (1.99.x)不兼容,sqoop2 并没有生产的稳定版本,

Sqoop1 import原理(导入)
从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在Mapreduce中有很多map,每个map读取一片数据,进而并行的完成数据的拷贝

Sqoop1 export原理(导出):
获取导出表的schema、metahdfs信息,和Hadoop中的字段match;多个map only作业同时进行,完成hdfs中数据导出到关系型数据库

主要是对mapreduce自带的inputformat和outputformat进行了定制

二、下安验配

依赖java和hadoop

三、sqoop使用

1 常用命令

列出数据库的databases

在这里插入图片描述

2 导入

–delete-target-dir :导入到hdfs前,是否删除目录(否则无法覆盖),在生产上不用,手动删

全部导入

查询导入

https://blog.csdn.net/u011250186/article/details/119280478

$CONDITIONS:query设置sql来指定查询条件,并且还需在sql中添加$CONDITIONS,来实现并行运行mr的功能

  • $CONDITIONS是个linux变量,用来给不同的map指定查询范围
  • $CONDITIONS,在查询导入的时候必须加,用来保证两边的数据顺序一致。即使只有一个map
  • 不加会报错
  • 双引号包括的查询sql中,$CONDITIONS要转义
  • 如果是多个m,需使用–split-by来区分数据,$CONDITIONS替换查询范围,

列导入

关键字导入

通过表和列的正则来选定导入的列

3 并行度

在这里插入图片描述
如果-m>1,会自动识别主键并按主键拆分,如果主键不均匀,建议执行拆分列

4 note

‘\N’:单引号’ '原样显示里边的内容=>\N ,sqoop的底层是java代码,java中\会转义为\,即最后会显示为\N。

Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用–input-null-string和–input-null-non-string两个参数。导入数据时采用–null-string和–null-non-string。

四、面试题

sqoop查询导入时,如果设置了并行度,那如何保证写入到hive的数据跟源表的数据顺序是一样的。$CONDITIONS是用来干嘛的?

sqoop并行读取时,需要指定每个mapper读取的数据范围,保证写入到目的地时有序,$CONDITIONS是个linux变量,用来根据分区列来给每个mapper拼接sql。
默认用主键,如果主键分布不均匀,建议用 --split-by指定分区列。
如果没有主键也没有–split-by,会报错。除非–num-mappers 1 or --autoreset-to-one-mapper 。–autoreset-to-one-mapper用来配合import-all-tables 工具一起使用,以自动处理架构中没有主键的表。

–split-limit参数有什么用

用来限制每个mapper读取数据的大小。如果参数大小 大于 mapper数量决定的数据大小,那会增加mapper数量。
如果设置为0 or negative,则不会生效。


http://www.ppmy.cn/news/1001812.html

相关文章

伺服电机的三种控制方式与三闭环控制

(项目)FPGA双电机主从快速稳定控制实现 第一章 伺服电机的三种控制方式与三闭环控制 伺服电机的三种控制方式与三闭环控制 (项目)FPGA双电机主从快速稳定控制实现前言一、电机控制方式二、电机三个闭环负反馈PID控制系统三、三闭…

射影平面 与 射影变换

射影平面 与 射影变换 射影平面 与 齐次坐标 中心为O 的把 将与一个点O 关联的所有平面和直线构成的集合称为 中心为O的把O[\lambda, p]射影(从平面\pi 到把O的一个对应关系)O[P, l] [OP, OL] ...截影(从把O 到平面\pi 的一个对应关系&…

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot(x,y,kind,data) #lineplot(x,y,data) #直方图 #displot(data,rug) #条形图 #barplot&…

计算机网络(4) --- 协议定制

计算机网络(3) --- 网络套接字TCP_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/132035757?spm1001.2014.3001.5501 目录 1. 协议的基础知识 TCP协议通讯流程 ​编辑 2.协议 1.介绍 2.手写协议 1.内容 2.接口 …

程序员有必要参加软考吗?

作为程序员,如果一直从事着前线的编程工作,是否会对身体造成负担,难以持续到35岁呢?毕竟在项目赶期时,工作强度很高,而技术也在不断变化,因此很多程序员在30岁前就开始转型。我曾见过很多焦虑自…

记录uniapp组件报警告Maximum recursive updates exceeded in component <View>

今天写了一个瀑布流报错如下 Maximum recursive updates exceeded in component . This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, u…

QT与VS环境 代码文件编码格式使用utf-8与带bom的utf-8的差异

使用QT进行开发的时候,有时候通常会遇到使用中文的时候,就算格式为utf-8,也会出现编译错误的问题,一般无从下手,这几天看到同事有专门研究这个问题,于是也决心花一点时间这地搞懂utf-8的编码。其中分为utf-8与utf-8 bo…

三、JVM-如何判断对象已死问题

内存模型以及如何判定对象已死问题 体验与验证 2.4.5.1 使用visualvm visualgc插件下载链接 :https://visualvm.github.io/pluginscenters.html 选择对应JDK版本链接—>Tools—>Visual GC 若上述链接找不到合适的,大家也可以自己在网上下载对应…