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.mysql---->HDFS(mysql中的必须是存在的,hdfs中的路径会自动创建,底层就是靠mr实现的)
导入含有主键或是没有主键的表
sqoop import  \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--target-dir hdfs://hadoop01/sqoop/mysqltohdfs/emp \
--delete-target-dir \
--fields-terminated-by '\t' \
--split-by mgr 
在导入没有主键的mysql表时,必须指定分割分片,或是写-m 1

导入指定的列
sqoop import  \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--columns "empno,ename" \
--where "empno > 22"
--target-dir hdfs://hadoop01/sqoop/mysqltohdfs/emp \
--delete-target-dir \
--fields-terminated-by '\t' \
--null-string 'hh' \
--null-non-string '0' \
--split-by mgr 

导入指定的查询内容
sqoop import  \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--query 'select * from emp where $CONDITIONS'
--target-dir hdfs://hadoop01/sqoop/mysqltohdfs/emp \
--delete-target-dir \
--fields-terminated-by '\t' \
-m 1
--query和--table不能同时出现,--query和--where同时出现的时候,--where不生效,--query和--columns同时出现的时候,会先从--query中查询出结果来在对列进行过滤

HDFS---->mysql(hdfs中的文件要存在,mysql中标要提前建立好,字段必须类型必须相同且字段的长度不得小于数据的长度,导出表不能指定列导出,默认就是从1,2,3列开始往出导,不知道hdfs文件中列存储名称)
sqoop export \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--export-target-dir hdfs://hadoop01/sqoop/hdfstomysql/emp \
--input-fields-terminated-by '\t' \
--input-null-string 'hh' \
--input-null-non-string '0' \
-m 1

Mysql---->Hive(mysql的表必须是存在的,hive中的表需要存在,mysql导入hive的本质就是先把mysql的数据导入到hdfs上存储起来,将导入的hdfs数据通过底层load的方式加载到hive中)
sqoop import \
--concect jdbc:mysql://hadoop01/mysqldb \
--username root \
--password 123456 \
--table emp \
--hive-import \
--hive-overwrite \
--hive-table 'mysqldb.emp' \
--hive-partition-key 'dt' \
--hive-partition-value '2020-01-03' \
--delete-target-dir \
--fields-terminated-by '\t' \
-m 1

Hive---->Mysql(hive和mysqlbiao都要存在)
sqoop export \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--export-dir /user/hive/warehouse/sqoop.db/emp \
--fields-terminated-by '\t' \
-m 1

Mysql---->Hbase(mysql表存在)
sqoop import \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--column-family 'base_info' \
--hbase-create-table \
--hbase-table 'emp' \
--hbase-row-key 'empno' \
-m 1

增量导入的方式
1.--query
sqoop import \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--query 'select * from emp where empno = 8000 and $CONDITIONS' \
--target-dir /tmp/emp \
--hive-import \
--hive-table "sqoop.emp" \
--fields-terminated-by '\t' \
-m 1
如果使用--query进行查询, 需要手动指定临时文件保存的路径, 通过 --target-dir 指定
2.--append
sqoop import \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--append \
--query 'select * from emp where empno = 8000 and $CONDITIONS' \
--target-dir /sqoop/append \
-m 1
3.--incremental
sqoop import \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--incremental append \
--check-column 'empno' \
--last-value '7800' \
--query 'select * from emp where $CONDITIONS' \
--target-dir /sqoop/incremental \
-m 1


job
sqoop job \
--create job1 \
-- import \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--table emp \
--target-dir /sqoop/job/job1 \
--delete-target-dir \
--m 1
执行sqoop job --exec job1
使用job完成增量导入,不会导入重复的数据,只会导入新添加入的数据
sqoop job \
--create job2 \
-- import \
--connect jdbc:mysql://hadoop01:3306/mysqldb \
--username root \
--password 123456 \
--incremental append \
--check-column 'empno' \
--last-value '0' \
--query 'select * from emp where $CONDITIONS' \
--target-dir /sqoop/job/incremental \
--m 1

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 23:00:39  更:2021-07-22 23:01:02 
 
开发: 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年5日历 -2024/5/6 8:32:49-

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