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 - ...
随机推荐
- ios上的 button和input-button为什么不水平居中的
在iphone6plus上的button中文本上不居中,如下图: 造成的原因,是button的padding不为零,造成的,因而设置padding: 0:就可以解决
- SecureCRT连接VirtualBox下的ubuntu以及NMP的搭建与通过宿主机访问该NGINX服务器过程
一直使用wamp作为开发环境,只是工作中时常会遇到在wamp下没问题但是提交到服务器生产环境会出现一些意想不到的情况,由此萌生了在本机搭建LNMP环境的想法,我个人不知道其他人的虚拟机搭建服务器环境是 ...
- MICAPS数据文件格式
MICAPS系统的数据结构是建立在文件系统基础上的.其特点是: l 利用目录来区分不同的数据来源.要素和层次,即不同的数据来源.要素和层次的数据要放在不同的目录中.同一目录中的数据只能有时次或时效上 ...
- Android系统拍照源码
个人对于Android系统拍照的一些总结:一种自定义图片拍照路径 ,另一种直接利用Android拍照后经过处理的缩略图 特别注意第一种方式需要增加SDK读写权限: <uses-permissio ...
- C#字符串的方法
static void Main(string[] args) { StrMethod(); } public static void StrMethod() { string myString = ...
- ubuntu配置NFS
ubuntu配置NFS: sudo apt-get install nfs-kernel-server 配置/etc/exports 例如:我们要将根目录下的 /opt/FriendlyARM/min ...
- Android -- 思考 -- 为什么要在项目中使用MVP模式
1,其实有时候一直在找借口不去思考这个问题,总是以赶项目为由,没有很认真的思考这个问题,为什么我们要在项目中使用MVP模式,自己也用MVP也已经做了两个项目,而且在网上也看了不少的文章,但是感觉在高层 ...
- oracle 11g 服务启动时提示1053错误,服务启动不了,重新配置监听解决问题
早上发现oracle服务启动不了了,找了很多资料,没找到有用的.通过重新配置监听解决问题.
- Db2数据库的备份和恢复
DB2数据库备份与恢复 1. 备份 1.1离线备份(必须在数据库所在PC机进行操作) STEP 1 连接到要备份的数据库 C:\Documents and Settings\Administra ...
- [Vuejs] 关于vue-router里面的subRoutes
刚学习vue,可能有使用不对的地方,希望没有对大家造成困扰! 使用vue-router,为了能够更好的管理.vue文件,需要用到子路由. 先看个错误的例子 routers.js '/company': ...