sqoop的安装与使用

Sqoop是一个用于在hadoop与mysql之间传输数据的工具

Sqoop 环境搭建

(1)上传安装包:sqoop-1.4.6-cdh5.14.2.tar.gz到/opt/software

(2)解压安装包:tar -zxf sqoop-1.4.6-cdh5.14.2.tar.gz -C /opt/install/

(3)创建软连接:ln -s /opt/install/sqoop-1.4.6-cdh5.14.2/ /opt/install/sqoop

(4)配置环境变量:vi /etc/profile

export SQOOP_HOME=/opt/install/sqoop

export PATH=SQOOP_HOME/bin:PATH

(5)让配置文件生效:source /etc/profile

(6)切换到sqoop根目录下的conf目录,复制并改名配置文件:cp sqoop-env-template.sh sqoop-env.sh

(7)修改配置文件sqoop-env.sh,在文件末尾追加以下内容:

export HADOOP_COMMON_HOME=/opt/install/hadoop

export HADOOP_MAPRED_HOME=/opt/install/hadoop

export HIVE_HOME=/opt/install/hive

export ZOOCFGDIR=/opt/install/zookeeper

export HBASE_HOME=/opt/install/hbase

(8)复制以下文件到 sqoop 的 lib 目录下

mysql-connector-java-5.1.27-bin.jar

java-json.jar

hive-common-1.1.0-cdh5.14.2.jar

hive-exec-1.1.0-cdh5.14.2.jar

(9)验证 sqoop 配置是否正确:sqoop help

(10)测试 Sqoop 是否能够成功连接数据库:

sqoop list-databases --connect jdbc:mysql://hadoop101:3306/ --username root --password 123

(11)做快照

连接数据库获取可用的数据库名称

sqoop list-databases \

--connect jdbc:mysql://hadoop101:3306 \

--username root \

--password 123

连接数据库获取指定数据库中的所有数据表

sqoop list-tables \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123

从mysql导入指定表中的全部数据到hdfs

启动各种服务

hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode

yarn-daemon.sh start resourcemanager

yarn-daemon.sh start nodemanager

执行导入命令

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--table customers \

--target-dir /data/retail_db/customers \

--num-mappers 1

从mysql导入指定表中带条件的数据到hdfs

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--table orders \

--where 'order_id<500' \

--delete-target-dir \

--target-dir /data/retail_db/orders \

--num-mappers 1

查看数据

hdfs dfs -cat /data/retail_db/orders/*

从mysql导入指定表中字段且带条件的数据到hdfs

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--table orders \

--where 'order_id<500' \

--columns order_id,order_date,order_customer_id \

--delete-target-dir \

--target-dir /data/retail_db/orders \

--num-mappers 1

查看数据

hdfs dfs -cat /data/retail_db/orders/*

从mysql导入指定查询语句的数据到hdfs【注:单双引号的区别,必须有where且以and $CONDITIONS结尾】

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--query 'select * from orders where order_status!="CLOSED" and $CONDITIONS' \

--delete-target-dir \

--target-dir /data/retail_db/orders \

--num-mappers 1

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--query "select * from orders where order_status!='CLOSED' and \$CONDITIONS" \

--delete-target-dir \

--target-dir /data/retail_db/orders \

--num-mappers 3 \

--split-by order_id

查看数据

hdfs dfs -cat /data/retail_db/orders/*

增量导入

在mysql中建表

use test;

create table student

(

id int,

name varchar(20),

sex varchar(20)

);

insert into student values(1,'tom','male'),(2,'jack','male');

select * from student;

在sqoop中导入

第一次全量导入

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/test \

--username root \

--password 123 \

--table student \

--target-dir /data/retail_db/student \

--delete-target-dir \

--num-mappers 1

查看数据

hdfs dfs -cat /data/retail_db/student/*

结果

1,tom,male

2,jack,male

在mysql中增加数据

insert into student values(3,'tim','male'),(4,'jim','male');

select * from student;

在sqoop中第二次增量导入【其中last-value是大于的关系】

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/test \

--username root \

--password 123 \

--table student \

--target-dir /data/retail_db/student \

--incremental append \

--check-column id \

--last-value 2 \

--num-mappers 1

查看数据

hdfs dfs -cat /data/retail_db/student/*

结果

增加数据

insert into student values(5,'tim','male'),(6,'jim','male');

PPT 演示

第一次全量导入

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--query "select * from orders where order_date between '2013-07-01' and '2014-04-15' and \$CONDITIONS" \

--delete-target-dir \

--target-dir /data/retail_db/orders \

--num-mappers 3 \

--split-by order_id

第二次增量导入

sqoop import \

--driver com.mysql.jdbc.Driver \

--connect jdbc:mysql://hadoop101:3306/retail_db \

--username root \

--password 123 \

--table orders \

--incremental append \

--check-column order_date \

--last-value 2014-04-15 \

--target-dir /data/retail_db/orders \

--num-mappers 3 \

--split-by order_id

相关推荐
hzp66613 小时前
spark动态分区参数spark.sql.sources.partitionOverwriteMode
大数据·hive·分布式·spark·etl·partitionover
yumgpkpm16 小时前
CMP(类ClouderaCDP7.3(404次编译) )完全支持华为鲲鹏Aarch64(ARM),粉丝数超过200就开源下载
hive·hadoop·redis·mongodb·elasticsearch·hbase·big data
励志成为糕手2 天前
Hive数据仓库:架构原理与实践指南
大数据·数据仓库·hive·1024程序员节·hql
B站_计算机毕业设计之家2 天前
Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
大数据·hadoop·爬虫·python·数据分析·1024程序员节·舆情分析
大叔_爱编程2 天前
基于随机森林算法的Boss直聘数据分析及可视化-hadoop+django+spider
hadoop·django·1024程序员节·spider·随机森林算法·boss直聘
毕设源码-赖学姐2 天前
【开题答辩全过程】以基于Hadoop的电商数据分析系统为例,包含答辩的问题和答案
大数据·hadoop·分布式·1024程序员节
阿什么名字不会重复呢3 天前
Hadoop报错 Couldn‘t find datanode to read file from. Forbidden
大数据·hadoop·分布式
通往曙光的路上3 天前
day17_cookie_webstorage
数据仓库·hive·hadoop
B站_计算机毕业设计之家5 天前
python股票交易数据管理系统 金融数据 分析可视化 Django框架 爬虫技术 大数据技术 Hadoop spark(源码)✅
大数据·hadoop·python·金融·spark·股票·推荐算法
随心............5 天前
sqoop采集完成后导致hdfs数据与Oracle数据量不符的问题。怎么解决?
hive·hadoop·sqoop