sqoop的使用
1.sqoop的安装
1.1 与hadoop和hive的集成,修改/opt/cdh/sqoop-1.4.5-cdh5.3.6/conf/sqoop-env.sh 文件
1.2 验证安装是否成功 bin/sqoop version 查看sqoop版本
2.sqoop 基本操作
2.1 查看sqoop可用的命令 bin/sqoop help
2.2 查看某个命令的具体用法 bin/sqoop help 命令
2.3 查看可用的数据库列表
bin/sqoop list-databases \
--connect jdbc:mysql://life-hadoop.life.com:3306/ \
--username root \
--password root
2.4 将mysql表中的数据导入到hdfs中
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--table my_user \
--target-dir /user/yanglin/sqoop/import/my_user \
--num-mappers 1
注:如果不指定导入的目录--target-dir 会默认导入到用户根目录 /user/yanglin/
默认导出格式为textfile,字段中间用,隔开
导出格式可以通过
--as-avrodatafile
--as-parquetfile
--as-sequencefile
--as-textfile 默认
同时可以自定只导出指定的列 --columns id,account
可以通过sql语句进行导入数据的清洗 --query 'select id ,account from my_user' 其中where 语句中必须包含$CONDITIONS
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--query 'select id ,account from my_user where $CONDITIONS' \
--target-dir /user/yanglin/sqoop/import/my_user_query \
--num-mappers 1 \
--as-parquetfile
可以指定压缩格式 --compress 和 --compression-codec
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--query 'select id ,account from my_user where $CONDITIONS' \
--target-dir /user/yanglin/sqoop/import/my_user_compress \
--num-mappers 1 \
--as-parquetfile \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec
可以指定导入数据的字段间的分割符,默认为,--fields-terminated-by '\t'
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--table my_user \
--target-dir /user/yanglin/sqoop/import/my_user_terminated \
--num-mappers 1 \
--fields-terminated-by '\t'
可以通过指定 --delete-target-dir 在运行前,如果输出目录存在,则删除
2.4.2 增量导入
方法一:使用--query 将指定的输入导入
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--query 'select * from my_user where $CONDITIONS and id>3 and id<7' \
--target-dir /user/yanglin/sqoop/import/my_user_query_where \
--num-mappers 1 \
--fields-terminated-by '\t'
方法二:使用sqoop自带命令,指定--check-column(依据哪一个列进行增量导入),--incremental(增量的方式为追加),--last-value(最后一条数据的id值)
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--table my_user \
--target-dir /user/yanglin/sqoop/import/my_user_table_where \
--num-mappers 1 \
--fields-terminated-by '\t' \
--check-column id \
--incremental append \
--last-value 3 \
--direct
2.4.3 通过指定--direct,我们可以指定通过mysql将数据进行导出,速度更快
2.5 数据导出到rdms
bin/sqoop export \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--username root \
--password root \
--table my_user \
--export-dir /user/yanglin/sqoop/export/user \
--num-mappers 1 \
--fields-terminated-by '\t' \
--direct
2.6 将rdmb中的数据导入到hive表中
bin/sqoop import \
--connect jdbc:mysql://life-hadoop.life.com:3306/sqoop \
--table my_user \
--username root \
--password root \
--num-mappers 1 \
--fields-terminated-by '\t' \
--hive-import \
--hive-database chd_hive \
--hive-table user_import
3.使用脚本进行sqoop导入和导出
3.1 编写脚本文件sqoop_import.sql
#使用文件对sqoop进行导入
import
#mysql数据库连接
--connect
jdbc:mysql://life-hadoop.life.com:3306/sqoop
#mysql数据库用户名
--username
root
#mysql数据库密码
--password
root
#mysql数据库要导出的表名
--table
my_user
#导出到hdfs系统中路径
--target-dir
/user/yanglin/sqoop/import/my_user_options
#导出数据中字段的分割符
--fields-terminated-by
'\t'
3.2 运行脚本 --options-file
bin/sqoop --options-file /opt/data/sqoop_import.sql --num-mappers 1
sqoop的使用的更多相关文章
- sqoop:Failed to download file from http://hdp01:8080/resources//oracle-jdbc-driver.jar due to HTTP error: HTTP Error 404: Not Found
环境:ambari2.3,centos7,sqoop1.4.6 问题描述:通过ambari安装了sqoop,又添加了oracle驱动配置,如下: 保存配置后,重启sqoop报错:http://hdp0 ...
- 安装sqoop
安装sqoop 1.默认已经安装好java+hadoop 2.下载对应hadoop版本的sqoop版本 3.解压安装包 tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-a ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- Oozie分布式任务的工作流——Sqoop篇
Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL ...
- [大数据之Sqoop] —— Sqoop初探
Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...
- [大数据之Sqoop] —— 什么是Sqoop?
介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...
- Sqoop切分数据的思想概况
Sqoop通过--split-by指定切分的字段,--m设置mapper的数量.通过这两个参数分解生成m个where子句,进行分段查询.因此sqoop的split可以理解为where子句的切分. 第一 ...
- sqoop数据导出导入命令
1. 将mysql中的数据导入到hive中 sqoop import --connect jdbc:mysql://localhost:3306/sqoop --direct --username r ...
- Apache Sqoop - Overview——Sqoop 概述
Apache Sqoop - Overview Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的其他数据进行结合处理.从生产系统加载大 ...
- sqoop使用中的小问题
1.数据库连接异常 执行数据导出 sqoop export --connect jdbc:mysql://192.168.208.129:3306/test --username hive --P - ...
随机推荐
- Application_Error VS OnException 遇到的坑
在工作中遇到一个巨坑,就是关于Application_Error和OnException, 本身我的应用程序设置了全局异常OnException处理,手动抛出异常,OnExcep ...
- php常用关键字
1.final关键字 <?php //final关键字修饰的类 是最终的类不能被继承 class demo{ //final关键字修饰的成员方法 是最终版本的方法不能被重写 final publ ...
- git常用指令
<a>github的提交方式 git status (1)git add .--------------------存储到本地 git add -u ...
- .html(),.text()和.val()的差异总结:
.html(),.text()和.val()的差异总结: 1.html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括htm ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增查询引擎管理
欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 RDIFramework.NET — 基于.NET的快速信 ...
- HDOJ 1004 Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- html页面定位
对于css中的position:relative;我始终搞不明白它是什么意思,有什么作用? 对于position的其它几个属性,我都搞懂了 引用 static : 无特殊定位,对象遵循HTML定位规则 ...
- Nodes “-1” are listed in ADOP_VALID_NODES table but not in FND_NODES table
While trying to apply patches to upgrade to 12.2.4, adop failed due to the below errors. Validating ...
- jquery+ajax实现分页
var curPage = 1; //当前页码 var total,pageSize,totalPage; //总记录数,每页显示数,总页数 getData(1); $("#pagecoun ...
- 裁剪Tessdata
一个项目只需要tesseract traineddata 中的数字部分. 实现过程简单说就是解包,去掉多余,再打包.利用了tesseract的dawg2wordlist / wordlist2da ...