赞
踩
mysql中的数据导入到hdfs中,需要借助一个工具sqoop完成,sqoop的安装和简介请点大数据必学框架-sqoop。
为了能够让sqoop识别到hdfs,需要在配置文件中指定位置,conf目录下的sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/module/hadoop
export HADOOP_MAPRED_HOME=/opt/module/hadoop
export ZOOKEEPER_HOME=/opt/module/zookeeper
export ZOOCFGDIR=/opt/module/zookeeper/conf
上述的配置解释:
之所以配置HADOOP_MAPRED_HOME,是因为sqoop导入导出数据走的是map-reduce,因为只涉及到map并不涉及到reduce,所以sqoop导入导出数据可以简单的理解为走的是map方式
在安装好sqoop之后,将jdbc驱动拷贝到sqoop的lib目录下,可以测试是否环境配置没有问题,输入命令
bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password password
list-databases就是sqoop的一个命令,命令后跟上参数即可,参数类型可以看作是kv类型,中间使用空格分隔
如果打印结果为一下,就证明环境没有问题
然后就可以进行mysql和hdfs之间的数据导入和导出问题
首先需要了解sqoop的两个命令:import 和 export
**import:**将mysql中的数据导入到hdfs中
**export:**将hdfs中的数据导入到mysql中
将mysql中数据导入到hdfs中
需求:现在需要将mysql中的gmall数据库中的user_info表中的数据导入到hdfs中,而且只导入id在1~20之间的id和login_name
bin/sqoop import \
--connect jdbc:mysql://hadoop103:3306/gmall \
--username root \
--password 000000 \
--table user_info \
--columns id,login_name \
--where "id>=1 and id<=20" \
--target-dir /user_info \
--delete-target-dir \
--fields-terminated-by '\t' \
--num-mappers 2 \
--split-by id
参数解释:
connect:mysql的连接地址,到数据库名
username:用户名
password:用户名密码
table:要导入的表名
columns:导入的字段
where:过滤条件
target-dir:要导入hdfs的目标路径
delete-target-dir:若目标路径存在删除
fields-terminated-by:字段间的分割字符
num-mappers:map的个数
split-by:根据那个字段进行切片,sqoop的切片个数和map的个数一致,切片规则是取到字段的最大值和最小值,取中值进行切分,这个字段可以任意选择,但是一般选择主键。
在执行完上面的命令之后,就会走一个mapreduce流程,执行完毕就会在hdfs中看到对应的文件夹
--table user_info \
--columns id,login_name \
--where "id>=1 and id<=20" \
上述的这三个参数其实可以使用sql语句替代,相应的命令是
--query 'select id,login_name from user_info where id>=1 and id<=20 and $CONDITIONS'
注意:最后面得
C
O
N
D
I
T
I
O
N
S
是
必
须
要
带
有
的
,
可
以
简
单
的
理
解
为
是
一
个
占
位
符
,
用
于
在
s
q
o
o
p
的
切
片
时
使
用
,
CONDITIONS是必须要带有的,可以简单的理解为是一个占位符,用于在sqoop的切片时使用,
CONDITIONS是必须要带有的,可以简单的理解为是一个占位符,用于在sqoop的切片时使用,CONDITIONS会根据切片规则将sql语句的过滤条件修改为各分区内的过滤条件,如果不这样,那么会每个分区都会执行一遍select id,login_name from user_info where id>=1 and id<=20,就造成了重复导入,而且,如果语句后面不带$CONDITIONS,就会报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。