首页 > 大数据 > > 恩墨学院-CCA175-第一讲
Sqoop是什么?
Sqoop是‘SQL to Hadoop database import’工具
开源的Apache项目
由Cloudera开发
目的是从RDBMS导入数据到HDFS
也可以从HDFS导数据到RDBMS
支持导入导出多种Hadoop文件类型
Hive表
Avro文件
HBase表
。。。
使用JDBC连接RDBMS
Sqoop如何工作?
Sqoop检测每个表然后自动生成Java类来向HDFS导入数据
然后创建并运行一个仅有Map的MapReduce作业来导入数据
默认情况下,四个Mapper连接到RDBMS
每个导入四分之一的数据

Sqoop特性
导入一个数据库中的单个或所有表
可以使用where指定导入哪些行
可以指定导入哪些列
可以指定任意的select语句
Sqoop可以自动基于导入的数据创建一个Hive表
可以从HDFS导出数据到数据库表
可以使用其余Connector
Sqoop使用案例
列出所有数据库
sqoop list-databases --username fred –password derf \
--connect jdbc:mysql://dbserver.example.com
列出world库中所有表
sqoop list-tables --username fred –password derf \
--connect jdbc:mysql://dbserver.example.com/world
导入world库中所有表
sqoop import-all-tables --username fred --password derf \
--connect jdbc:mysql://dbserver.example.com/world
登录MySQL(注:movielens.sql文件链接:https://pan.baidu.com/s/1IAeihNEDWhgIuKP2bRUGAQ 提取码:flzm )
# mysql -uroot -pcloudera
mysql> source movielens.sql
mysql> use movielens;
mysql> desc movie;
mysql> select * from movie limit 5;
mysql> desc movierating;
mysql> select * from movierating limit 5;
mysql> exit
查看数据库列表
# sqoop list-databases --connect jdbc:mysql://localhost --username root --password cloudera
列出movielens库中的表
# sqoop list-tables --connect jdbc:mysql://localhost/movielens --username root --password cloudera
导入数据
# sqoop import --connect jdbc:mysql://localhost/movielens --table movie --fields-terminated-by '\t' --username root --password cloudera
验证数据
# hdfs dfs -ls movie
参数记不住?
无论是导入导出,很多参数记不住可以查询自带的help选项
sqoop help
sqoop import --help
where查询?

参数解析
考点解析
Import参数解析
--query后的select语句中where条件必须有$CONDITIONS,
--split-by指定按哪列拆分任务
-m or --num-mappers设置并行度(mapper数量),默认值为4
sqoop import
--connect jdbc:mysql://localhost:3306/problem1 --username cloudera --password cloudera
--fields-terminated-by ','
--query 'select customer_num,customer_name,model,customer_age from sensor where model != "M142L" and $CONDITIONS'
--target-dir /user/cert/problem1/solution
--split-by 'customer_num'
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28530558/viewspace-3156647/ ,如需转载,请注明出处,否则将追究法律责任。