您的位置:首页 > 运维架构

Sqoop笔记二之命令使用

2016-11-06 20:08 330 查看

ist-databases命令查看所有的数据库

linux下执行:

sqooplist-databases --connect jdbc:mysql://192.168.172.1:3306/ -username root-password password

-P 不显示密码执行中需要手动输入密码



import

sqoop命令实际上都是转换为map任务。Import命令是将DB数据导入hdfs,我的数据库中有一个staff表内有若干数据。

staff表



执行sqoop命令

sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff



Sqoop默认会生成4个文件,一条记录一个文件,大于4条记录则最多生成4个文件。

-m –target-dir

sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir sqoop_import_staff

-m 表示只生成一个文件

--target-dir sqoop_import_staff 表示指定生成文件的名称,在hdfs中的路径为/user/root/sqoop_import_staff/part-m-00000

--target-dir import_staff 在hdfs中的路径为/import_staff/part-m-00000

如下图显示3条记录都存在于一个文件中



-z –append --where

sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir /import_staff --append --where "id=3" –z

-append 追加数据,如果指定路径下存在文件part-m-00000则会生成新的文件,如part-m-00001

-z 使用压缩格式导入,导入的文件使用-text查看

--where 根据字段过滤,先全部从数据库读出然后再根据条件过滤将符合要求的记录写入hdfs

--null-string --null-non-string
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir /import_staff --append --null-string "#"--null-non-string "-1"

--null-string "#" 表示当vchar字段为null时以#代替

--null-non-string "-1" 表示当非vchar字段为null以-1代替

--where
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password -m 1--target-dir /import_staff --append --null-string "#"--null-non-string "-1" --query "select * from staff where id=3and \$CONDITIONS"

--where 后面跟sql语句,但是有无where都必须有\$CONDITIONS

注意:以上操作需要启动hadoop集群不能只启动hdfs否则会报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: