2021-04-30

sqoop简单使用

 

sql to hadoop

用来实现关系型数据库与hdfs之间的转换,hdfs <=>mysql

 

sqoop2跟1 不兼容 ,2不投入生产

 

sqoop原理

将导入或导出命令反应成mapreduce程序来实现

在翻译出的mapreduce中主要是对inputformat和outoutformat进行定制

sqoop官方的参数大全 http://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html

参数

介绍

--connect jdbc:mysql://ip:3306/databasename

#指定JDBC的URL 其中database指的是(Mysql或者Oracle)中的数据库名

--table  tablename

#要读取数据库database中的表名   

--username root   

#用户名

--password 

#密码    

--target-dir   /path

 #指的是HDFS中导入表的存放目录(注意:是目录)

--m 1

#并发的map数量1,如果不设置默认启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据

--hcatalog-table

--hcatalog-database

#指定hive表

#指定hive库

-- where ’查询条件‘   

#导入查询出来的内容,表的子集

--incremental  append

#增量导入

--check-column:column_id

#指定增量导入时的参考列

--last-value:num

#上一次导入column_id的最后一个值

--null-string ‘’   

#导入的字段为空时,用指定的字符进行替换

--create-hive-table

#创建hive表

--list-tables

#列出某个表

--list-database

#列出所有数据库

--fields-terminated-by

#设定导入数据后每行的分隔符

 

 

1.测试sqoop是否能够成功连接数据库

sqoop list-databases --connect jdbc:mysql://10.120.21.151/ --username hive --password p0o9i8u7y6

image.png

导入数据

在sqoop中,‘导入’概念指从非大数据集群向大数据集群中传数据,叫做:导入,即使用import关键字

1.确定Mysql服务开启正常

2.在Mysql中新建一张表并插入一些数据

mysql -uroot -pp0o9I*U&
mysql> create database testbase;
mysql> create table test(id int , name CHAR);
mysql> insert into test values(1,'w');
mysql> insert into test values(2,'s');

image.png

3.导入数据

(1)全部导入

sqoop import --connect jdbc:mysql://10.120.21.151/metastore \
--username hive \
--password p0o9i8u7y6 \
--table t1 \
--target-dir /user/hive/t1 \
--num-mappers 1 \
--fields-terminated-by "\t"

image.png

 

 


以下是重新在mysql和hive中创建的测试数据

从hdfs到mysql

把需要输出的文件上传至hdfs中,设置好hdfs中目录和文件的权限,不然可能会报权限不够的错误

Sqoop export

sqoop export \
--connect jdbc:mysql://10.193.130.192/my_wiki \ 
--username bigvoid  \
-P  (此处用--password的话会报错)  \
--table export_test \
--num-mappers 1 \
--export-dir /user/super/export \
--input-fields-terminated-by “\t”

--password的报错

检查导入的数据

 

集成了kerberos的需注意登录相应的用户进行操作

Sqoop expot  将hive表导入mysql中

  1. 全部导入
全部导入
sqoop export \
--connect jdbc:mysql://10.193.130.192:3306/my_wiki \
--username bigvoid \
-P \
--table export_test(mysql表) \
--hcatalog-database fsimage(hive数据库) \
--hcatalog-table h_m(hive表)

检查导入数据

 

2. 部分导入

指定导入(指定列导入):
sqoop export \
--connect jdbc:mysql://10.193.130.192:3306/my_wiki \
--username bigvoid -P --table export_test(mysql表) \
--columns "id" \
--hcatalog-database fsimage(hive数据库)  \
--hcatalog-table h_m(hive表)

检查导入的数据

 

Mysql到hive

(1)导入数据到HDFS中

 

(1)导入数据到HDFS中sqoop export \
sqoop import \
--connect jdbc:mysql://10.193.130.192:3306/my_wiki(mysql库) \
--username bigvoid -P --table export_test(mysql表) \
--target-dir /user/super/import --num-mappers 1 \
--hive-table h_m(hive表)\
 -m 1 \
--split-by date \
--direct \
--fields-terminated-by '\t

检查导入文件

 

hadoop fs -ls /user/super

 

(2)加载数据

Load data inpath ‘/user/super/import’ into table h_m;

(3)检查数据

 

直接从mysql导入hive 不需要load data加载

 sqoop import \
--connect jdbc:mysql://10.193.130.192:3306/my_wiki \                           
--username bigvoid \
-P \
--table export_test \
--fields-terminated-by '\t' \
--delete-target-dir \
--num-mappers 1 \
--hive-import \
--hive-database fsimage \
--hive-table m_h 

 

检查导入数据

 

 

增量导入

Append方式

(1)创建一个mysql appendtest表

插入三条数据

 

(2)用sqoop语句创建一个跟mysql一样的appendtest表

用sqoop语句创建一个跟mysql一样的appendtest表
sqoop create-hive-table \
--connect jdbc:mysql://10.193.130.192:3306/my_wiki \
--username bigvoid -P \
--table appendtest \
--hive-database fsimage \
--hive-table appendtest

进行导入,将id>0的三条数据进行导入

 

(3)进行导入,将id>0的三条数据进行导入
sqoop import \
--connect jdbc:mysql://10.193.130.192/my_wiki \
--username bigvoid -P --table appendtest \
--hive-import -m 1 \
--hive-database fsimage \
--hive-table appendtest \
--incremental append \
--check-column id \
--last-value 0

(4)检查导入数据

(5)向mysql表中再次插入数据

再次执行增量导入 上一次导入的时候将--last-value 设置0

此次导入时将值设置为3

(6)再次执行增量导入 上一次导入的时候将--last-value 设置0此次导入时将值设置为3
sqoop import \
--connect jdbc:mysql://10.193.130.192/my_wiki \
--username bigvoid \                           
-P \
--table appendtest \                                    
--hive-import -m 1 \
--hive-database fsimage \
--hive-table appendtest \
--incremental append \
--check-column id \
--last-value 3

查询导入数据

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值