sqoop(发音:skup)原理及配置过程

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间
进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的
HDFS中,也可以将HDFS的数据导进到关系型数据库中。
======================================================
sqoop的安装:
1.上传    /usr/sqoop/
2.解压
[root@zhiyou01 usr]#  cd sqoop/
[root@zhiyou01 sqoop]# ls
sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
[root@zhiyou01 sqoop]# tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
3.把数据库连接驱动放到  $SQOOP_HOME\lib 下
===============================================================
∙设置mysql数据库运行远程访问;  (关闭wifi精灵  ,防火墙,杀毒软件 )
      默认不允许外部访问,原因:
mysql--user
root用户只允许localhost访问,不允许远程ip访问;
mysql> show databases;
                           mysql> use mysql;
                           mysql> update user set host = '%'  where user = 'root';
                           mysql> select hosh,user from user;
                           mysql>  flush privileges    #刷新权限
或者:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES
测试:
=========================================================
1.把mysql里面的数据导入到hdfs中
./sqoop import  --connect  jdbc:mysql://192.168.52.190:3306/bigdata24   --username root     --
password root   --table dept    --target-dir '/sqoop/td'    --fields-terminated-by  '\t'
target-dir  目录路径
fields-terminated-by 分割符是什么
[root@zhiyou01 bin]# hadoop fs -ls /
Found 2 items
drwxr-xr-x   - root supergroup          0 2018-06-05 10:25 /sqoop
drwx------   - root supergroup          0 2018-06-05 10:24 /tmp
[root@zhiyou01 bin]# hadoop fs -ls /sqoop
Found 1 items
drwxr-xr-x   - root supergroup          0 2018-06-05 10:26 /sqoop/td
[root@zhiyou01 bin]# hadoop fs -ls /sqoop/td
Found 6 items
-rw-r--r--   3 root supergroup          0 2018-06-05 10:26 /sqoop/td/_SUCCESS
-rw-r--r--   3 root supergroup         17 2018-06-05 10:26 /sqoop/td/part-m-00000
-rw-r--r--   3 root supergroup         25 2018-06-05 10:26 /sqoop/td/part-m-00001
-rw-r--r--   3 root supergroup         25 2018-06-05 10:26 /sqoop/td/part-m-00002
-rw-r--r--   3 root supergroup          0 2018-06-05 10:26 /sqoop/td/part-m-00003
-rw-r--r--   3 root supergroup         39 2018-06-05 10:26 /sqoop/td/part-m-00004
2.把hdfs中的数据导出到mysql中
2.1  首先建数据库建表
2.2  导出
./sqoop export  --connect jdbc:mysql://192.168.52.190:3306/bigdata24  --username root              
--password root  --export-dir '/sqoop/td' --table dept_sqoop  -m 1 --fields-terminated-by     '\t'
1. 将数据库导到hdfs上面
./sqoop import --connect jdbc:mysql://192.168.52.190:3306/bigdata24 --username root --
password root --table dept --columns 'd_id,d_name,d_duty'
指定输出路径、指定数据分隔符
sqoop import --connect jdbc:mysql:// 192.168.52.190:3306/bigdata24 --username root --
password root --table dept --target-dir '/sqoop/td' --fields-terminated-by
'\t'
指定Map数量 ‐m
sqoop import --connect jdbc:mysql:// 192.168.52.190:3306/bigdata24 --username root --
password root --table dept --target-dir '/sqoop/td1' --fields-terminated-by
'\t' -m 2
增加where条件, 注意:条件必须用引号引起来
sqoop import --connect jdbc:mysql://1 192.168.52.190:3306/bigdata24 --username root -
-password root --table dept --where 'd_id>3' --target-dir '/sqoop/td2'
增加query语句(使用 \ 将语句换行)
./sqoop import --connect jdbc:mysql://192.168.52.190:3306/bigdata24 --username root --password root
--query 'SELECT * FROM dept where d_id > 2 AND $CONDITIONS' --split-by dept.d_id --target-dir
'/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND
$CONDITIONS这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在
$CONDITIONS前加上\即\$CONDITIONS
如果设置map数量为1个时即‐m 1,不用加上‐‐split‐by ${tablename.column},否则需要加上
2. 第二类:将HDFS上的数据导出到数据库中
(不要忘记指定分隔符)
sqoop export --connect jdbc:mysql://192.168.52.190:3306/bigdata24 --username root --password root --
export-dir '/sqoop/td3' --table dept2 -m 1 --fields-terminated-by ','
./sqoop export --connect jdbc:mysql://192.168.52.190:3306/bigdata24 --username root --password root
--export-dir '/sqoop/td3' --table dept2 -m 1 --fies-terminated-by ','

你可能感兴趣的:(Linux,大数据)