IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Sqoop基础知识(个人总结) -> 正文阅读

[大数据]Sqoop基础知识(个人总结)

????声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识?内容详细全面, 言辞官方的文章
??????????????2. 由于是个人总结, 所以用最精简的话语来写文章
??????????????3. 若有错误不当之处, 请指出

Sqoop是关系型数据库Hadoop大数据平台间的导入导出工具

底层是4个MapTask

导入数据:

  1. RDBMS到HDFS

(1)全部导入

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

–table staff \

–target-dir /user/company \

–delete-target-dir \

–num-mappers 1 \

–fields-terminated-by “\t”

(2)查询导入

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

-target-dir /user/company \

–delete-target-dir \

–num-mappers 1 \

–fields-terminated-by “\t” \

–query 'select name,sex from staff where id <=1 and $CONDITIONS;

提示: must contain ‘$CONDITIONS’ in WHERE clause. 这是为了map拆分任务时能添加条件,若原本不想过滤可以写作 where 1=1 and $CONDITIONS;

如果query后使用的是双引号, 则$CONDITIONS前必须加转义符, 防止shell识别为自己的变量。

(3)导入指定列

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

–target-dir /user/company \

–delete-target-dir \

–num-mappers 1 \

–fields-terminated-by “\t” \

–columns id,sex \

–table staff

提示: columns中如果涉及到多列, 用逗号分隔, 分隔时不要添加空格

(4)使用sqoop关键字筛选查询导入数据

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

–target-dir /user/company \

–delete-target-dir \

–num-mappers 1 \

–fields-terminated-by “\t” \

–table staff \

-where “id=1”

  1. RDBMS到Hive

第一步 将数据导入到HDFS, 默认的临时目录是/user/用户名/表名

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

–table staff \

–num-mappers 1 \

–hive-import \

–fields-terminated-by “\t” \

–hive-overwrite \

–hive-table staff_hive

第二步 将导入到HDFS的数据迁移到Hive仓库

  1. RDBMS到HBase

? 得提前创建好表

bin/sqoop import \

–connect jdbc:mysql://hadoop101:3306/company \

–username root \

–password root12345 \

–table company \

–columns “id,name,sex” \

–column-family “info” \

–hbase-row-key “id” \

–hbase-table “hbase_company” \

–num-mappers 1 \

–split-by id

导出数据:

导出数据时,只能把HDFS文件导出, 其他导出不支持;
Hive/HBase导出实质也是HDFS导出,跟Hive/HBase没关系

由于是文件操作, 所以不支持选择部分字段和加过滤条件等, 相当于只能select * from table;

$ bin/sqoop export \
--connect jdbc:mysql://hadoop101:3306/company \
--username root \
--password root12345 \
--table user \
--num-mappers 1 \
--export-dir /user/hive/warehouse/user \
--input-fields-terminated-by "\t"

Sqoop导入导出Null存储一致性问题

Hive中的Null在底层是以“\N”来存储, 而MySQL中的Null在底层就是Null, 为了保证数据两端的匹配:

导出数据时采用 --input-null-string和–input-null-non-string两个参数

导入数据时采用 --null-string和–null-non-string两个参数

事务原子性问题:

多个MapTask间, 有的成功了有的失败了, 不满足原子性

解决办法:

  1. 设置map数量为1个(不推荐)

  2. 加参数

? --staging-table user

? --clear-staging-table

Sqoop在导入数据的时候数据倾斜

  1. split-by: 指明按哪个字段作为参考来分割任务, 来切分表的工作单元;

    ? 那个**$CONDITIONS** 就是根据数据范围划分任务的;

    ? 它们两个要结合使用

  2. 通过rownum( ) over( ) as lineNum, 结合split-by lineNum

  3. 把热点key 拼接固定区间内的随机值变得打乱

  4. num-mappers: 并行执行N个MapTask

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:16:31  更:2021-10-26 12:17:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:56:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码