五、Sqoop平台安装

实验任务一:下载和解压 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流年、素写一世繁华!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值