sqoop导入

Sqoop导入笔记

发表: 2016-10-08 浏览: 1784

Sqoop 导入 

 

 

注:若需转载,请注明出处!

导入使用的MySQL数据创建语句详见:https://ask.hellobi.com/blog/marsj/5093

大家可以直接参考上述博文在你的MySQL数据库中创建对应的表用于实战Sqoop导入

1、通用参数

–connect,数据库连接字符串 
–username,数据库访问用户名 
–password ,指定数据库连接密码(明文) 
-P 交互式的指定数据库密码 
–password-file,使用密码文件制定数据库密码

2、导入控制参数——选择部分数据导入

–query,要导入的数据用SQL查询控制 
示例:sqoop import –connect jdbc:mysql://centos:3306/sqooptest –username root –password 123456 –query “select * from sqoop where student_id<=500 AND $CONDITION” 
–table,指定要导入的数据表 tbl 、–where,指定导入时的条件 “student_id<=500” 
–columns,指定要导入的字段名 例如 –columns class_id,class_name

3、目的目录(HDFS)

–warehouse-dir,指定导入到HDFS中的目录

4、分隔符

–fields-terminated-by,例– fields-terminated-by ‘|’,默认情况下用‘,’进行字段分隔 
–lines-terminated-by,行分隔符 
–escaped-by,转义字符

5、控制导入并行度

-m–num-mappers [INT],控制导入时MR作业的Map任务数量,后接一个整数值,用来表示MR的并行度。在进行并行导入的时候,Sqoop会使用split-by进行负载切分(按照表的PK进行切分),首先获取切分字段Max和Min值,再根据Max和Min值去进行切分,举例:student_id [1,1000],Sqoop会直接使用4个Map任务”select * from student where id >=min and id <=max,(1,250),(250,500),(500,750),(750,1000)。如果非常不幸,你的ID或切分字段不是均匀分布的话,会导致任务的不平衡。注明:Sqoop目前不能使用多个字段作为切分字段。

6、类型映射(导入到Hive时使用)

–map-column-hive, id=String,value=Int

7、实战

1、 查看对应库、表情况

sqoop list-databases –connect jdbc:mysql://centos:3306 –username root –password 123456 
sqoop list-tables –connect jdbc:mysql://centos:3306/sqooptest –username root –password 123456

2、 密码

–password,明文密码 
-P,交互式密码 
–password-file, 失败【待解决】

3、 导入全表
sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata

注意 
a) 目录不能已存在 
b) 没指定-m或splite-by时,表必须有PK

4、 指定导入目录
sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata --warehouse-dir /sqoopim
5、 控制并行度
sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata -m 2
6、 控制字段分隔符
sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata -m 2 –fields-terminated-by “|”
7、 导入部分数据

仅导入class_id<=5的数据 
–query,必须使用–target-dir指定导入目录,且删除–table参数

sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --query "select * from bigdata where class_id<=5 and \$CONDITIONS" -m 1 --target-dir /user/root/bigdata

–where,直接用–where指定条件,用引号引起来

sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata --where "class_id<=5" -m 1

–columns,指定导入字段名 
仅导入class_id,class_name,teacher

sqoop import --connect jdbc:mysql://centos:3306/sqooptest --username root --password 123456 --table bigdata --columns class_id,class_name,teacher -m 1
8、 使用文件进行导入

注意:文件中的参数与指定值必须每个一行 
写入参数文件sqoop.im,内容如下:

import
--connect
jdbc:mysql://centos:3306/sqooptest
--username
root
--password
123456
--table
bigdata
--columns
class_id,class_name,teacher
-m
1

执行sqoop:

sqoop --options-file sqoop.im

转载于:https://www.cnblogs.com/Bighua123/p/7718936.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值