黑猴子的家:Sqoop RDBMS到HDFS

1、确定Mysql服务开启正常

[victor@node1 ~]$ service mysql status
Redirecting to /bin/systemctl status  mysql.service
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 201*-03-27 12:00:00 CST; 21s ago
  Process: 2386 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 981 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 2385 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           ├─2385 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─2578 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin 
--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/va.

2、在Mysql中新建一张表并插入一些数据

[victor@node1 ~]$ mysql -uroot –p000000
mysql> create database company;
mysql> use company;
mysql> create table company.staff(id int(4) primary key not null auto_increment, name varchar(255), 
sex varchar(255));
mysql> insert into company.staff(name, sex) values('Thomas', 'Male');
mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale');

3、全部导入

[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company?characterEncoding=UTF-8 \
--username root \
--password 000000 \     ## -P  大写P 是用暗文密码
--table staff \
--target-dir /user/company \      ##/user/company  目录不能存在,会自动创建
--delete-target-dir \             ##执行之前,先删除这个/user/company目录
--num-mappers 1 \
--fields-terminated-by "\t"      ##每个字段用什么分割,mysql默认是用逗号分割

#csv文件是用逗号分割的文件
#tsv是用制表符tab分割的文件

4、查询导入

[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from staff where id <=1 and $CONDITIONS;'

#尖叫提示:如果query后使用的是双引号,则$CONDITIONS前必须加转移符,防止shell识别为自己的变量。

5、导入指定列

[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,sex \
--table staff

#尖叫提示:columns中如果涉及到多列,用逗号分隔,分隔时不要添加空格, --num-mappers 2,设置为2,在hdfs会生成2个文件

6、使用sqoop关键字筛选查询导入数据

[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table staff \
--where "id=1"

尖叫提示:在Sqoop中可以使用sqoop import -D property.name=property.value这样的方式加入执行任务的参数,多个参数用空格隔开。

你可能感兴趣的:(黑猴子的家:Sqoop RDBMS到HDFS)