博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache Sqoop-----hdfs迁移工具
阅读量:4299 次
发布时间:2019-05-27

本文共 1425 字,大约阅读时间需要 4 分钟。

开源免费的数据迁移工具,

可以从RDBMS导入HDFS,

也可以从HDFS导出到RDBMS(这种场景现在spark什么的 需要写代码)。

Hive可以基于SQL读取HDFS、HBASE、MongoDB的数据,

Hive本质就是对已有数据源做一个包装

所以说你从Hive中迁移就等于从hdfs中迁移,hbase也是一样的道理。

 

 

sqoop用起来非常简单

 

把整个表迁移过来:

sqoop import 

--connect jdbc:mysql://localhost/hr

--driver com.mysql.jdbc.Driver

--table user 

--username root

--password 12345

--target-dir  /data/user

--m  3

 

通过where过滤

你可以把这些命令写成shell script,然后通过Oozie或者crown来定时运行它。

实际工作都是定时自动进行的。

 

还可以通过只拿部分列,再加上where,可以很好地筛选出数据。

mapper为3个

delete-target-dir:如果存在这个目录就把它删掉,否则会报错。

append:不删除已存在的目录,直接追加数据。

 

更直接的方式:

--query 

优点是你可以join~~~

但是Mapper怎么分配工作呢,根据列来划分数据,由  \ $CONDITIONS来定义

执行的时候

--split-by-host

它按host列来区分,比如host有1200个排好序的值。

然后你告诉了他有3个mapper,

他按自己的条件逻辑来划分出3个数据段。

正宗的增量迁移:

append和last-modified

 

那我们怎么抓数据呢,

你就append增量追加,不需要删除目录了

那我们怎么抓数据呢。

你根据order_data的last-value,也就是上次搬的值。

搬到目标目录。

以上操作可以写shell script,但是这样你就得每天修改

last-value,因为今天日期又变了。

 

Last-modified方式

append和last-modified

append模式只能增加但是无法更新数据,last-modified不仅能增加还能修改数据。

参考:

语法范式解析: 

sqoop import: SQOOP 命令,从关系型数据库导数到Hadoop 
–check-column: 用于检查增量数据的列 
–incremental append: 设置为增量模式 
–last-value :源数据中所有大于–last value的值都会被导入Hadoop
 

语法范式解析: 

sqoop import: SQOOP 命令,从关系型数据库导数到Hadoop 
–check-column: 必须是timestamp列 
–incremental lastmodified: 设置为最后改动模式 
–merge-key: 必须是唯一主键 
–last-value: 所有大于最后一个时间的数据都会被更新

 

目标文件格式(导入成什么格式):

支持Avro Sequence text  Parquet

用Avro的特别多,Sequence基本不用了,text一般用于测试(default),

Parquet结构复杂生成慢但是查询效率很高。

用--as-sequencefile来设置目标文件格式

 

课后作业

Mysql---》HDFS数据迁移练习

 

 

转载地址:http://muvws.baihongyu.com/

你可能感兴趣的文章
Docker基础-9-docker命令(一)
查看>>
Docker基础-13-如何发布一个镜像到私有的docker仓库
查看>>
Docker基础-14-Dockerfile实战练习2
查看>>
Docker基础-15-容器操作
查看>>
Docker基础-16-网络-Linux网络命名空间
查看>>
Docker基础-17-网络-两个容器为什么能通信
查看>>
Docker基础-18-网络-两个网络命名空间网络通信配置过程
查看>>
Docker基础-19-网络-bridge模式和docker0详解
查看>>
Docker基础-20-网络-容器link关系和新建bridge网络
查看>>
Docker基础-21-网络-none和host网络
查看>>
Docker基础-22-volume-数据持久化之data volume
查看>>
Docker基础-23-数据-数据持久化之Bind Mouting
查看>>
Java数据结构和算法-1-数组-自定义封装一个数组操作类(1)
查看>>
Java数据结构和算法-2-数组-自定义封装一个数组操作类(2)
查看>>
Java数据结构和算法-3-数组-简单排序:冒泡排序/选择排序/插入排序
查看>>
Java数据结构和算法-4-栈和队列-封装一个自定义栈和队列类并提供相关类方法
查看>>
Java数据结构和算法-5-单链表方法
查看>>
Jenkins高级篇之Pipeline技巧篇-1-小白搭建Pipeline项目开发环境
查看>>
Jenkins高级篇之Pipeline技巧篇-2-如何处理多个参数化变量
查看>>
Jenkins高级篇之Pipeline技巧篇-3-JSON文件处理多个参数进一步优化
查看>>