sqoop使用详解

1、sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。

导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;

导出数据:从Hadoop的文件系统中导出数据到关系数据库

2、将导入或导出命令翻译成mapreduce程序来实现

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

 3、解压压缩包,修改启动脚本

$ cd $SQOOP_HOME/conf

$ mv sqoop-env-template.sh sqoop-env.sh

打开sqoop-env.sh并编辑下面几行:

export HADOOP_COMMON_HOME=/soft/hadoop/

export HADOOP_MAPRED_HOME=/soft/hadoop/

export HIVE_HOME=/soft/hive

4、环境 sudo nano /etc/profile

export SQOOP_HOME=/soft/sqoop

export PATH=$PATH:$SQOOP_HOME/bin
cp  ~/app/hive/lib/mysql-connector-java-5.1.28.jar   $SQOOP_HOME/lib/

$ cd $SQOOP_HOME/bin

$ sqoop-version

 5、建表

create database userdb;

grant all privileges on userdb.* to 'sqoop'@'%' identified by 'sqoop';

grant all privileges on userdb.* to 'sqoop'@'localhost' identified by 'sqoop';

grant all privileges on userdb.* to 'sqoop'@'s201' identified by 'sqoop';

flush privileges;

CREATE TABLE employee (

   id INT NOT NULL PRIMARY KEY,

   name VARCHAR(20),

   deg VARCHAR(20),

   salary INT,

   dept VARCHAR(10));

6、验证

sqoop export --connect jdbc:mysql://hadoop2:3306/userdb --username sqoop --password sqoop --table employee --export-dir /emp --input-fields-terminated-by ','

7、sqoop从mysql导入数据到hdfs

$bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/userdb \
--username sqoop \
--password sqoop \
--table emp --m 1

 导入到hive

bin/sqoop import --connect jdbc:mysql://hadoop1:3306/test --username sqoop --password sqoop --table emp --hive-import --m 1
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/userdb \
--username sqoop \
--password sqoop \
--target-dir /queryresult \
--table emp_add --m 1

结果验证

$HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

导入部分子集

bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/userdb \
--username sqoop \
--password sqoop \
--where "city ='sec-bad'" \
--target-dir /wherequery \
--table emp_add --m 1

 

posted on 2020-07-17 16:28  清浊  阅读(546)  评论(0编辑  收藏  举报