实验任务一:下载和解压 Sqoop
解压sqoop:
tar -zxvf sqoop-1.4.7.bin__had.gz
重命名:
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop
实验任务二:配置 Sqoop 环境
切换目录:
cd /usr/local/src/sqoop/conf
复制 sqoop-env-template.sh 模板:
cp sqoop-env-template.sh sqoop-env.sh
编辑文件,添加 Hdoop、Hbase、Hive、zookeeper组件的安装路径:
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/src/hadoop-2.7.6
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.7.6
export HBASE_HOME=/usr/local/src/hbase-1.2.1
export HIVE_HOME=/usr/local/src/hive
export ZOOCFGDIR=/usr/local/src/zookeeper-3.4.5
配置环境变量:
vi /etc/profile
export SQOOP_HOME=/usr/local/src/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib
刷新环境变量:
source /etc/profile
架包:
cp mysql-connector-java-5.1.46.jar /usr/local/src/hive/lib/
实验任务三:启动 Sqoop
启动 Hadoop 集群:
start-all.sh
测试 Sqoop 是否能够正常连接 MySQL 数据库:
sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P
密码:
Password123$
将hive架包到Sqoop的lib目录中:
cp /usr/local/src/hive/lib/hive-common-2.0.0.jar /usr/local/src/sqoop/lib/
实验任务四:Sqoop 模板命令
登录MySQL数据库:
mysql -uroot -pPassword123$
创建sample库:
create database sample;
使用 sample库:
use sample;
创建 student表:
create table student(number char(9) primary key, name varchar(10));
向student表插入几条数据:
insert into student values('01','zhangsan'), ('02','lisi'), ('03','wangwu');
查询student表的数据:
mysql> select * from student;
退出:
exit
登录hive:
hive
创建sample库:
create database sample;
查询所有数据库:
show databases;
使用sample库
use sample;
退出hive命令行
exit;
从MySQL导出数据,导入 Hive:
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --fields-terminated-by '|' --delete-target-dir --num-mappers 1 --hive-import --hive-database sample --hive-table student
删除 MySQL 数据,student表中number 为主键,添加信息导致主键重复,报错,所以删除表数据
登录:
mysql -u root -pPassword123$
使用数据库:
use sample;
删除表:
delete from student;
退出:
exit;
从Hive导出数据,导入到MySQL:
sqoop export --connect "jdbc:mysql://master:3306/sample?useUnicode=true&characterEncoding=utf-8" --username root --password Password123$ --table student --input-fields-terminated-by '|' --export-dir /user/hive/warehouse/sample.db/student/*
实验任务五:Sqoop 组件应用
Sqoop 常用设置命令如下:
(1)列出 MySQL 数据库中的所有数据库:
sqoop list-databases -connect jdbc:mysql://localhost:3306/ -username root -password Password123$
(2)连接 MySQL 并列出 sample 数据库中的表:
sqoop list-tables -connect jdbc:mysql://localhost:3306/sample -username root -password Password123$
(3)将关系型数据的表结构复制到 hive 中,只是复制表的结构,表中的内容没有复制过去:
sqoop create-hive-table -connect jdbc:mysql://localhost:3306/sample -table student -username root -password Password123$ -hive-table test
(4)从关系数据库导入文件到 Hive 中:
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --delete-target-dir --num-mappers 1 --hive-import --hive-database default --hive-table test
(5)将 Hive 中的表数据导入到 MySQL 中,在进行导入之前,MySQL 中的表 hive_test表必须已经提前创建好:
mysql -u root -pPassword123$
mysql>use sample;
mysql>delete from student;
mysql>exit;
sqoop export -connect jdbc:mysql://master:3306/sample --username root -password Password123$ -table student --input-fields-terminated-by '\001' -export-dir /user/hive/warehouse/test
(6)从数据库导出表的数据到 HDFS 上文件:
sqoop import -connect jdbc:mysql://master:3306/sample --username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test
(7)从数据库增量导入表数据到 HDFS 中:
登录:
mysql -uroot -pPassword123$
mysql>use sample;
mysql>insert into student values('04','sss'),('05','ss2'),('06','ss3');
非数值型的值不能当做增量
mysql>alter table student modify column number int;
mysql>exit;
sqoop import -connect jdbc:mysql://master:3306/sample --username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test -check-column number -incremental append -last-value 0
查看导入数据:
hdfs dfs -cat /user/test/part-m-00000
标签:Sqoop,--,平台,sqoop,hive,sample,student,mysql,安装 From: https://www.cnblogs.com/-liunian/p/17410966.html