Sqoop工具
1、协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。
把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)
同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。
Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。
Sqoop就是一个转换工具,用于在关系型数据库与HDFS之间进行数据转换。

项目使用场景:
1.业务数据存放在关系数据库中。如果数据量达到一定规模后需要对其进行分析或同统计,
单纯使用关系数据库可能会成为瓶颈,这时可以将数据从业务数据库数据导入(import)
到Hadoop平台进行离线分析。
2.对大规模的数据在Hadoop平台上进行分析以后,可能需要将结果同步到关系数据库中作
为业务的辅助数据,这时候需要将Hadoop平台分析后的数据导出(export)到关系数据库。

一、Sqoop与MySQL
1.列出mysql数据库中的所有数据库
sqoop list-databases -connect jdbc:mysql://hdp-qm-01:3306 \
-username hadoop -password hadoop

2.列出数据库hivedb1711中的所有数据表
sqoop list-tables -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop

3.通过Sqoop执行SQL语句
sqoop eval -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -query 'select * from EMP'

二、Sqoop与HDFS(MySQL数据库与HDFS)
1.将hivedb1711.EMP表中的数据导入HDFS的/sqfs目录下
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -table EMP -m 1 -target-dir /sqfs/emp1
解释:
(1)-table EMP 表示要导出的EMP表
(2) -m 1 表示使用一个maptask操作
(3) -target-dir /sqfs/emp1 数据导到/sqfs/emp1位置

注意:执行过程走mapreduce,所以要保证每一个集群节点都能访问hivedb1711数据库!
grant all privileges on hivedb1711.* to 'hadoop'@'%' identified by 'hadoop';

使用sql语句过滤满足条件的数据,将其导入hdfs系统(注意:and $CONDITIONS)
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -query 'select * from EMP where emgr=10 and $CONDITIONS' \
-m 2 --split-by eNo -target-dir /sqfs/emp3;

没有过滤,使用sql语句导入所有数据到hdfs(注意:where $CONDITIONS)
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -query 'select * from EMP where $CONDITIONS' \
-m 2 --split-by eNo -target-dir /sqfs/emp4;
注意:这种方式和1里面的操作是一个效果

2.将HDFS上/sqfs目录下的数据导入的hivedb1711.emp2表中
(1).hivedb1711.emp2表结构必须存在
CREATE TABLE IF NOT EXISTS emp2(
eNo int(25) not null primary key,
eName varchar(45),
eJob varchar(45),
emgr int(25),
eHiredate date,
eSal int(45),
ecomm int(45),
dp_no int(25)
);

(2).导出数据到emp2表的命令:
sqoop export -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -table emp2 \
-m 1 -export-dir /sqfs/emp3

三、Sqoop与Hive
1.将关系型数据的emp表结构复制到Hive中(复制表结构)
sqoop create-hive-table -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -table emp2 -hive-table demo_log.emp \
-fields-terminated-by "|" -lines-terminated-by "\n"

2.将关系数据库中的emp表的数据导入文件到Hive表中
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -table emp2 -hive-table demo_log.emp -m 3 \
-fields-terminated-by "|" -hive-import

3.将Hive中的表 demo_log.emp数据导入到mysql数据库emp3表中
(1)先在MySQL数据库中简历表的结构
CREATE TABLE IF NOT EXISTS emp3(
eNo int(25) not null primary key,
eName varchar(45),
eJob varchar(45),
emgr int(25),
eHiredate date,
eSal int(45),
ecomm int(45),
dp_no int(25)
);
(2).导出数据到emp3表:
sqoop export -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop -table emp3 \
-export-dir /user/hive/warehouse/demo_log.db/emp/* \
-input-fields-terminated-by '|'

说明:-input-fields-terminated-by '|' 分隔符是根据export-dir 指定
目录下文件内容的分割符号来确定的

四、Sqoop与->HBase
1. MySQL 中的EMP表中的数据导入数据到 HBase的qm170701:mysql_emp表中
(1)先在HBase表中创建HBase表:
create 'qm170701:mysql_emp','cf'
(2).导入数据到HBase的qm170701:mysql_emp表
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop \
-table EMP \
-hbase-table qm170701:mysql_emp \
-column-family 'cf' \
-hbase-row-key eNo -m 1

2.将Mysql数据库emp表不同列的数据添加到emp3表中不同列族中
(1)先在HBase表中创建HBase表:
create 'qm170701:mysql_emp2','cf1','cf2'

(2).导入数据到HBase的qm170701:mysql_emp2表
A.先将EMP表的eName,eJob列中的数据到cf1列族中
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop \
-table EMP \
-hbase-table qm170701:mysql_emp2 \
-column-family 'cf1' \
-hbase-row-key eNo -m 1 -columns eNo,eName,eJob

B.将EMP表的emgr,eHiredate,eSal,ecomm,dp_no列中的数据到cf2列族中
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop \
-table EMP \
-hbase-table qm170701:mysql_emp2 \
-column-family 'cf2' \
-hbase-row-key eNo -m 1 -columns eNo,emgr,eHiredate,eSal,ecomm,dp_no

===========================================================
多表关联导出!!!!!!
===========================================================

【2】.JONES领导谁。(谁向JONES报告)

sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop \
-query 'select e2.eNo,e2.eName as name from(select eNo from EMP where eName="JONES")e1 left join EMP e2 on e1.eNo=e2.emgr where $CONDITIONS' \
-m 2 --split-by e2.eNo -target-dir /sqfs/emp122

没有问题:
【3】 各个部门中工资大于1500的员工人数及部门名称!!!!!!!!
sqoop import -connect jdbc:mysql://hdp-qm-01:3306/hivedb1711 \
-username hadoop -password hadoop \
-query 'select d1.dp_name as dname,e2.nums as nums from(select e1.dp_no,count(e1.eNo) as nums from EMP e1 where e1.eSal>1500 group by dp_no) e2 left join dept d1 on d1.dp_no=e2.dp_no where $CONDITIONS' \
-m 1 --split-by e2.dname -target-dir /sqfs/emp122

sqoop导入导出到mysql,hbase,hive,hdfs系统,多表关联导出案例的更多相关文章

  1. Sqoop导入数据到mysql数据库报错:ERROR tool.ExportTool: Error during export: Export job failed!(已解决)

    问题描述: Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Conta ...

  2. sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据

    1.安装sqoop 请参考http://www.cnblogs.com/Richardzhu/p/3322635.html 增加了SQOOP_HOME相关环境变量:source ~/.bashrc  ...

  3. Sqoop使用,mysql,hbase,hive等相互转换

    Sqoop 是一款用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件. 安装 Sqoop 1.下载sqoop并加mysql驱动包 http://mirror.bit.edu ...

  4. 使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决

    一.参考文档: 1.https://www.rittmanmead.com/blog/2014/03/using-sqoop-for-loading-oracle-data-into-hadoop-o ...

  5. 完美转换MySQL的字符集 Mysql 数据的导入导出,Mysql 4.1导入到4.0

    MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...

  6. Hive三种不同的数据导出的方式

    转自:http://blog.chinaunix.net/uid-27177626-id-4653808.html Hive三种不同的数据导出的方式,根据导出的地方不一样,将这些方法分为三类:(1)导 ...

  7. Hive的两种表

    1.内部表 内部表Load数据有两种方式:① Load data ***:②hdfs dfs -put ****.这是因为在Metastore文件,即mysql的hive数据库的“SDS”表中,保存着 ...

  8. Oracle中如何实现Mysql的两表关联update操作

    在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...

  9. 面试官:为什么mysql不建议执行超过3表以上的多表关联查询?

    概述 前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort ...

  10. sqoop用法之mysql与hive数据导入导出

    目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...

随机推荐

  1. 【转载】超级系统工具Sysdig,比 strace、tcpdump、lsof 加起来还强大

    可以用sysdig命令做很多很酷的事情 网络 查看占用网络带宽最多的进程 sysdig -c topprocs_net 显示主机192.168.0.1的网络传输数据 as binary: sysdig ...

  2. Golang ETCD包的安装使用 golang安装etcd第三方库clientv3 报错 解决

    目录 ETCD 官网 视频地址 课件资料 ETCD 日志收集项目 为什么要自己写不用ELK? 项目的架构 上节课项目进度 etcd介绍 安装etcd windows安装 Ubuntu(linux系统) ...

  3. 如何在 Ubuntu 服务器上安装桌面环境 (GUI)

    先以VNC方式远程登录服务器 执行命令 sudo apt update && sudo apt upgrade # 选择1---使用tasksel安装 sudo apt install ...

  4. 虚拟机中安装mysql 完整教程( CentOS7 版本)

    一.检查是否安装了Mysql Yum检查 yum list installed | grep mysql 安装则直接删除 yum remove mysql-community-client.x86_6 ...

  5. fastposter v2.9.2 最简海报生成器

    fastposter v2.9.2 程序员必备海报生成器 fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击 ...

  6. CentOS7部署Redis(离线单机)

    一.检查是否安装 ## 检查是否安装了Redis [root@localhost /]# ps -ef | grep redis ## 存在就删除 [root@localhost /]# sudo y ...

  7. paramiko连接windows10详解,远程管理windows服务器

    1.win10安装 OpenSSH 官网链接:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openss ...

  8. lsjORM ----让开发变得更加快捷(一)

    描述: 1.lsjORM底层采用的是开源petapocoORM框架,你可以任意的拓展它 2.自动生成DAL Model BLL等文件,让习惯三层开发的你更加顺手 3.节省编写sql的时间,让开发更快捷 ...

  9. 编译安装mysql5.7.20

    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \ ...

  10. Xcode Debugger Extremely Slow , Xcode Swift调试器调试时极其慢(😡)

    一.Xcode 调试器 我的项目是国内某办公软件的iOS客户端, 代码量极其庞大, 编译一次至少30min以上. 关键是,如果你遇到问题的时候,调试下断点,需要至少5min才能断下来,走下一步,又重复 ...