Sqoop 工具使用
Sqoop 是什么及安装
Hadoop sqoop
Apache sqoop (SQL to Hadoop)
Sqoop is a tool designed to transfer data between Hadoop and relational databases or mainframes. You can use Sqoop to import data from a relational database management system (RDBMS) such as MySQL or Oracle or a mainframe into the Hadoop Distributed File System (HDFS), transform the data in Hadoop MapReduce, and then export the data back into an RDBMS.
Sqoop是一种用于在Hadoop和关系数据库或大型机之间传输数据的工具。你可以使用Sqoop从一个关系数据库管理系统(RDBMS)中导入数据,比如MySQL或Oracle,或者一个大型机到Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据导出到RDBMS中。
sqoop 安装
1.解压
2.配置sqoop-env.sh文件
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6
#Set the path to where bin/hive is available
export HIVE_HOME=/opt/cdh-5.3.6/hive-0.13.1-cdh5.3.6
3.拷贝 MySQL 连接 jar 包到 lib 目录下
4.使用工具
# 帮助文档
bin/sqoop help
bin/sqoop list-databases --help
# 连接数据库
bin/sqoop list-databases \
--connect jdbc:mysql://hostname-ubuntu:3306 \
--username root \
--password ubuntu
Imports( RDBMS > HDFS )
底层通过JDBC连接数据库,通过生成 JAVA (只有 map 程序) 代码,编译成 jar ,经过 YARN 执行
#执行命令(五要素)
bin/sqoop import \
--connect jdbc:mysql://hostname-ubuntu:3306/test \
--username root \
--password ubuntu \
--table user \
--target-dir /user/cen/sqoop/imp_user \
# 注意文件夹不能存在
# 若此项不设置默认会在 /user/cen/tablename/ 创建文件夹
# 可添加以下选项解决
# 删除目标目录
--delete-target-dir \
# 选择列
--columns id,name \
# 增加查询条件
--where "age = '18'" \
# 设置压缩
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec
# 设置输出的分隔符
--fields-terminated-by '\t' \
# 设置map数目
--num-mappers 1 \
# 设置文件存储格式(默认是textfile)
--as-parquetfile \
# 设置直接从 MySQL 直接导入(不经过MapReduce)
--direct
#日志分析
Running Sqoop version: 1.4.5-cdh5.3.6 说明执行版本
Setting your password on the command-line is insecure. Consider using -P instead. 这样使用密码是不安全的,推荐使用-p的方式
Preparing to use a MySQL streaming resultset. 使用MySQL流导出数据
Beginning code generation 开始生成Java代码
Executing SQL statement: SELECT t.* FROM `user` AS t LIMIT 1 执行SQL查询语句
Executing SQL statement: SELECT t.* FROM `user` AS t LIMIT 1 执行SQL查询语句
HADOOP_MAPRED_HOME is /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6 Hadoop的目录是。。。
Note: /tmp/sqoop-cen/compile/55ff43412ccc6eae25cf74ff6a4b119a/user.java uses or overrides a deprecated API. 生成jar
Note: Recompile with -Xlint:deprecation for details.
Writing jar file: /tmp/sqoop-cen/compile/55ff43412ccc6eae25cf74ff6a4b119a/user.jar 写入jar文件
It looks like you are importing from mysql.
This transfer can be faster! Use the --direct 这个转换可以更快,使用直接模式
option to exercise a MySQL-specific fast path.
Setting zero DATETIME behavior to convertToNull (mysql)
Beginning import of user 开始导入数据
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
mapred.jar is deprecated. Instead, use mapreduce.job.jar 使用mapreduce的jar包
使用SQL查询语句(无需 tablename 无需选择列 无需where )
bin/sqoop import \
--connect jdbc:mysql://hostname-ubuntu:3306/test \
--username root \
--password ubuntu \
--query 'select id from user where $CONDITIONS' \
--target-dir /user/cen/sqoop/imp_user_query \
--split-by id
错误:When importing query results in parallel, you must specify --split-by.
增加:--split-by id
错误:Query [select id from user] must contain '$CONDITIONS' in WHERE clause.
解决:--query 'select id from user where $CONDITIONS' \
增量数据导入Incremental import(只导入新增加的)
1. query 对时间戳进行条件查询(更好用)
where createtime => 20170721000000 and createtimt < 201707220000
2. 使用 sqoop 的参数
--check-column Source column to check for incremental
change 根据哪一个字段进行查询
--incremental Define an incremental import of type
'append' or 'lastmodified' 追加方式
--last-value Last imported value in the incremental
check column 查询的开始值
Export( HDFS > RDBMS )( Hive > RDBMS )
底层通过JDBC连接数据库,通过生成 JAVA (只有 map 程序) 代码,编译成 jar ,经过 YARN 执行
#执行命令(五要素)
bin/sqoop export \
--connect jdbc:mysql://hostname-ubuntu:3306/test \
--username root \
--password ubuntu \
--table user \
--export-dir /user/cen/sqoop/imp_user
Import Hive table
从 RDBMS 导入到 Hive 表中,底层实现:正常 Import > HDFS > load
# 关系型数据库 4 要素(IP+database/username/pw/table) + Hive 4 要素(import/database/table/分隔符)
bin/sqoop import \
--connect jdbc:mysql://hostname-ubuntu:3306/test \
--username root \
--password ubuntu \
--table user \
--hive-import \
--hive-database default \
--hive-table user \
--fields-terminated-by '\t' \
--delete-target-dir \
# 需要缓冲目录,若目录存在则删除
--create-hive-table #若表不存在,需要创建的话
通过文件执行 sqoop 命令
!!格式如下:
#这是注释!!
bin/sqoop
import
--connect
jdbc:mysql://hostname-ubuntu:3306/test
--username
root
--password
ubuntu
--table
user
--target-dir
/user/cen/sqoop/imp_user
执行:
sqoop --options-file /opt/datas/xxx.xx
Sqoop 工具使用的更多相关文章
- 使用sqoop工具从oracle导入数据
sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive.hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入 从RDBMS中抽取出的数据可以被Ma ...
- sqoop工具从oracle导入数据2
sqoop工具从oracle导入数据 sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive.hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入 ...
- Sqoop工具
简介 SQOOP是用于对数据进行导入导出的. (1)把MySQL.Oracle等数据库中的数据导入到HDFS.Hive.HBase中 (2)把HDFS.Hive.HBase中的数据导出到MySQL.O ...
- hive数据导入Sqoop工具
下载Sqoop ,直接解压缩;然后导入2个环境变量 1.导入oracle数据库中表emp的数据到hive表中 1.导入到HDFS中 $ sqoop import --connect jdbc:mysq ...
- sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)
数据表 第一类:数据库中的数据导入到HDFS上 #数据库驱动jar包用mysql-connector-java--bin,否则有可能报错! ./sqoop import --connect jdbc: ...
- 初识sqoop
Sqoop 产生背景 Sqoop 的产生主要源于以下几种需求: 1.多数使用 Hadoop 技术处理大数据业务的企业,有大量的数据存储在传统的关系型数据库(RDBMS)中. 2.由于缺乏工具的支持,对 ...
- 大数据之sqoop
一.安装: 1 解压然后把mysql的驱动放在$SQOOP_HOME/lib 目录中2. conf/sqoop-en.sh export HADOOP_COMMON_HOME=/home/hadoop ...
- sqoop的安装与使用
1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具.充分利用MapReduce并行特点以批处理的方式加快传输数据.发展至今 ...
- Sqoop安装与使用(sqoop-1.4.5 on hadoop 1.0.4)
1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今 ...
随机推荐
- Linux pptpd 的 iptables 包过滤设置
用Centos架设了一台pptpd vpn服务器,信息如下: 服务器IP 192.168.100.1 /24 网关 192.168.100.254(NAT防火墙,将 <外网IP>:1723 ...
- 当尝试从ArcCatalog、.net应用或是Java应用中连接ArcGIS Server 时,显示下面任何一种错误提示: "Access Denied" 或 "The connection could not be made"
Error: 访问拒绝或无法连接错误 文章编号 : 29042 软件: ArcGIS Server 9.0, 9.1, 9.2, 9.3, 9.3.1 操作系统: Windows 2000, XP, ...
- 问问javascript
问题1:在创建新函数(如function P(){};)的时候会自动创建一个原型对象P.prototype(也称作原型属性prototype).当创建一个新对象(此处指非函数对象,在js里面函数也会被 ...
- Cordova各个插件使用介绍系列(八)—$cordovaCamera筛选手机图库图片并显示
原文档请看http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ionic%E5%9B%BE%E7%89%87%E4%B8%8A%E4%B ...
- Maven 私有库和本地库的安装与配置 Sonatype Nexus + Maven
环境:CentOS 7.0 Final.JDK8.Sonatype Nexus.Maven 虚拟机模拟IP:192.168.16.167 备注:root权限用户操作 前提:已安装 JDK8 并配置好了 ...
- Zamplus 晶赞天机
类型: 定制服务 软件包: car/vehicle integrated industry solution collateral tourism 联系服务商 产品详情 解决方案 概要 DMP:通常称 ...
- python3线程介绍02(线程锁的介绍:互斥、信号、条件、时间、定时器)
#!/usr/bin/env python# -*- coding:utf-8 -*- import threadingimport timeimport random # 1-互斥锁 Lock 同一 ...
- MySQL的prompt不生效的问题
安装完MySQL之后,使用了自定义的配置文件来启动MySQL,发现配置在[mysql]中的prompt并没有生效 [root@MySQL56_L1 ~]# /usr/local/mysql/bin/m ...
- 【^.^】hello world~~
一直以来都没有在公共博客上写作的习惯,加之Evernote的强大和方便好用,让我仅仅依赖它就足以满足日常学习笔记的记录和整理. 不过看着Evernote里面记录的大大小小的笔记已经有400+了,觉得应 ...
- Django基础--4
补充知识-路由系统(URL) URL传递额外的参数 在url.py里,除了默认会传一个request给处理函数,还可以传递额外的参数,把一个字典作为第三个参数传入,之后就可以在处理函数里取到对应的值: ...