Sqoop的数据导入
“导入工具”导入单个表从RDBMS到HDFS。表中的每一行被视为HDFS的记录。所有记录都存储为文本文件的文本数据(或者Avro、sequence文件等二进制数据)
列举出所有的数据库
命令行查看帮助
bin/sqoop list‐databases ‐‐help
列出windows主机所有的数据库
bin/sqoop list‐databases ‐‐connect jdbc:mysql://192.168.1.7:3306/ ‐‐
username root ‐‐password root
查看某一个数据库下面的所有数据表
bin/sqoop list‐tables ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb ‐‐
username root ‐‐password root
如果出现连接拒绝,则在windows的mysql的数据库中执行以下命
开启windows的远程连接权限
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'yourpassword'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
其它导入示例
表数据
在mysql中有一个库userdb中三个表:emp, emp_add和emp_conn
导入数据库表数据到HDFS
下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。
bin/sqoop import ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb ‐‐
password root ‐‐username root ‐‐table emp ‐‐m 1
如果成功执行,那么会得到下面的输出。
为了验证在HDFS导入的数据,请使用以下命令查看导入的
hdfs dfs ‐ls /user/root/emp
导入到HDFS指定目录
在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。
使用参数 --target-dir来指定导出目的地,
使用参数—delete-target-dir来判断导出目录是否存在,如果存在就删掉
bin/sqoop import ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb ‐‐
username root ‐‐password root ‐‐delete‐target‐dir ‐‐table emp ‐‐targetdir
/sqoop/emp ‐‐m 1
查看导出的数据
hdfs dfs ‐text /sqoop/emp/part‐m‐00000
它会用逗号(,)分隔emp_add表的数据和字段。
1201,gopal,manager,50000,TP
1202,manisha,Proof reader,50000,TP
1203,khalil,php dev,30000,AC
1204,prasanth,php dev,30000,AC
1205,kranthi,admin,20000,TP
导入到hdfs指定目录并指定字段之间的分隔符
bin/sqoop import ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb ‐‐
username root ‐‐password root ‐‐delete‐target‐dir ‐‐table emp ‐‐
target‐dir /sqoop/emp2 ‐‐m 1 ‐‐fields‐terminated‐by '\t'
查看文件内容
hdfs dfs ‐text /sqoop/emp2/part‐m‐00000