CentOS 7 配置hadoop(五) 配置sqoop(伪分布)

第五篇: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表中数据

   

 

原文地址:https://www.cnblogs.com/wdyjt/p/14164248.html