第五篇:CentOS 7 配置hadoop(五) 配置sqoop(伪分布)
1.使用 FileZilla 上传sqoop文件到虚拟机
2.1Linux解压并删除压缩包 tar -zxvf sqoop 仅解压
2.2 mkdir ./sqoop && tar -xzvf sqoop-1.4.6-cdh5.7.0.tar.gz -C ./sqoop --strip-components 1
把解压文件放在sqoop的目录下,这样就得到了“sqoop”命名的解压文件。
–strip-components = NUMBER
在提取时从文件名中删除NUMBER个前导组件
3.配置环境变量
vi /etc/profile
export SQOOP_HOME=/opt/sqoop-1.4.6-cdh5.7.0
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
4、 拷贝mysql的jdbc jar文件sqoop的lib目录 在上章 hive的lib包下已经存在,只需要传过来就OK
cp /opt/hive-1.1.0-cdh5.7.0/lib/ mysql-connector-java-5.1.45-bin.jar /opt/sqoop-1.4.6-cdh5.7.0/lib/
注意:1.使用sqoop前需要导入Java-json.jar的包到sqoop的lib目录下 使用FileZilla上传 hive下面有java-json.jar
sqoop/lib下有hadoop-core-2.6.0-mr1-cdh5.7.0-20160212.213956-397.jar和mysql的jar
2.将之前上传的mysql-connector-java-5.1.45-bin.jar 拷贝到sqoop的lib目录下
3.将hive/lib/hive* 拷贝到sqoop的lib目录下 cp /opt/hive-1.1.0-cdh5.7.0/lib/hive* /opt/sqoop-1.4.6-cdh5.7.0/lib/
3)测试 sqoop version
执行下边命令
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root -P
回车之后输入你mysql的root用户密码
出现上述框框内的内容证明sqoop配置无误
在使用sqoop是,需要在mysql 赋予虚拟机用户的权限 master为主机名 12345为mysql密码
grant all privileges on *.* to root@master identified by '12345';

执行这句报错 说明你的密码太简单, 就先执行下面这两句在执行赋权操作:
如何密码设置简单的 需要执行:
set global validate_password_policy=0;
set global validate_password_length=1;
最后在刷新:flush privileges;
5.使用sqoop
1)mysql导入到hive(hdfs)
(1)进入mysql 创建数据库
create database hive_test;
进入数据库
use hive_test;
创建表
CREATE TABLE user (id int,name varchar(20));
添加数据
insert into user (id,name) values (1,'a'),(2,'test');
(2)进入hive 创建数据库
create database hive_test;
进入数据库
use hive_test;
创建表
create table user (id int,name string)row format delimited fields terminated by ' ';
(3)mysql数据导入hive数据
#--connect 连接
--username mysql账号
--password mysql密码
--table mysql表名
-m 执行map的次数
--fields-terminated-by 列的分割
--hive-import 导入hive
--hive-database
hive中的那个数据库
--hive-table hive表
--target-dir 是你要导入到那个表的地址
sqoop import --connect
jdbc:mysql://master:3306/hive_test
--username root
--password hadoop
--table user
--fields-terminated-by ' '
--delete-target-dir
--target-dir /user/hive/warehouse/hive_test.db/user
--m 1
--hive-import
--hive-database hive_test
--hive-table user
(4)查看hive 中的表数据
显示出来代表执行成功
2)hdfs导出到mysql
(1)创建hive 表
create table users (id int,name string)row format delimited fields terminated by ' '
(2)添加数据
insert into users values (1,'b'),(2,'a');
(3)创建mysql表
CREATE TABLE users (id int,name varchar(20));
(4)hdfs导入mysql
#--connect 连接
--username mysql账号
--password mysql密码
--table mysql表名
--export-dir hive文件在网站上的那个地方
--fields-terminated-by 列的分割
--m 执行map的次数
sqoop export
--connect jdbc:mysql://master:3306/hive_test
--username root
--password hadoop
--table users
--export-dir /user/hive/warehouse/hive_test.db/users/000000_0
--fields-terminated-by ' ' --m 1
(5)查看mysql表中数据