未加星标

Sqoop导入笔记

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

Sqoop 导入

1、通用参数 2、导入控制参数――选择部分数据导入 3、目的目录(HDFS) 4、分隔符 5、控制导入并行度 6、类型映射(导入到Hive时使用) 7、实战 1、 查看对应库、表情况 2、 密码 3、 导入全表 4、 指定导入目录 5、 控制并行度 6、 控制字段分隔符 7、 导入部分数据 8、 使用文件进行导入 导入使用的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

本文数据库(综合)相关术语:系统安全软件

主题: SQLHDFS数据MySQLHive数据库TI删除
分页:12
转载请注明
本文标题:Sqoop导入笔记
本站链接:http://www.codesec.net/view/481658.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(64)