Sqoop 简单的数据导入/导出、一些常用命令及参数
2018-11-28 21:33
363 查看
一、数据导入:
在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,使用 import 关键字。
1)RDBMS 到 HDFS
①确定Mysql 服务开启正常
②在Mysql 中新建一张表并插入一些数据
mysql -uroot -proot create databese company; use company; create table staff(id int(4)primary key not null auto_increment, name varchar(255),sex varchar(255)); insert into staff(name,sex)valus 'zhangsan','nan'); insert into staff(name,sex)valus 'lisi','nv');
③导入数据
全部导入:
bin/sqoop import --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --table staff --target-dir /usr/company --delete-target-dir --num-mappers 1 --fields-terminated-by "\t"
查询导入:
bin/sqoop import --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --target-dir /user/company --delete-target-dir --num-mappers 1 --fields-terminated-by "\t" --query 'select name,sex from staff where id <=1 and $conditions;'
提示:如果 query 后使用的是双引号,则$condition 前必须加转移符,防止 shell 识别为自己的变量。–query 选项,不能同时与 --table 选项使用。
导入指定列:
bin/sqoop import --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --target-dir /user/company --delete-target-dir --num-mappers 1 --fields-terminated-by "\t" --columns id,sex --table staff
注意:columns 中如果涉及到多列,用逗号分割,分隔时不要添加空格。
使用sqoop关键字筛选查询导入数据:
bin/sqoop import --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --target-dir /user/company --delete-target-dir --num-mappers 1 --fields-terminated-by "\t" --table staff --where "id=1"
注意:在sqoop中可以使用sqoop import -D property.name=porperty.value 这样的方式加入执行任务的参数,多个参数用空格隔开。
2)RDBMS 到 HIVE
bin/sqoop import --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --table staff --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table staff_hive
该过程分为两步:
第一步将数据导入到 HDFS,默认的临时目录是/user/admin/表名。
第二步将导入到HDFS 的数据迁移到 Hive仓库。
二、数据导出
在Sqoop中,“导出”指:从大数据集群(HDFS、HIVE、HBASE)向非大数据集群(RDBMS)中传输数据,用export关键字。
hive/hdfs 到 RDBMS
bin/sqoop export --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --table staff --num-mappers 1 --export-dir /user/hive/warehouse/staff_hive --input-fields-terminated-by "\t"
提示:Mysql 中如果表不存在,不会自动创建。 数据是追加。
三、简单的脚本打包
使用 opt 格式的文件打包 sqoop 命令,然后执行。
1)创建一个 .opt文件
mkdir opt touch opt/job_HDFS2RDBMS.opt
2)编写 sqoop 脚本 vi opt/job_HDFS2RDBMS.opt
export --connect jdbc:mysql://192.168.199.130:3306/company --username root --password root --table staff --num-mappers 1 --export-dir /user/hive/warehouse/staff_hive --input-fields-terminated-by "\t"
3)执行该脚本
bin/sqoop --options-file opt/job_HDFS2RDBMS.opt
四、常用命令及参数
常用命令:
import 将数据导入到集群 export 将集群数据导出 codegen 获取数据库中某张表数据生成 Java 并打包 Jar create-hive-table 创建 hive 表 eval 查看 SQL 执行结果 import-all-tables 导入某个数据库下所有表到 hdfs 中 job 用来生成一个 sqoop 的任务,生成后,该任务并不执行,除非使用命令执行该任务。 list-databases 列出所有数据库名 list-tables 列出某个数据库下所有表 merge 将hdfs 中不同目录下面的数据合在一起,并存放在指定的目录中 metastore 记录 sqoop job 的元书库信息 help 打印 sqoop 帮助信息 version 打印 sqoop 版本信息
公用参数:
--connect 连接关系型数据库的 URL --connection-mannger 指定要使用的连接管理类 --driver JDBC 的 driver class --help 打印帮助信息 --username 连接数据库的用户名 --password 连接数据库的密码 --verbose 在控制台打印出详细信息
相关文章推荐
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
- sqoop简单操作-从mysql导入导出数据
- sqoop数据导入导出常用功能
- informix中简单数据导入导出命令sh程序
- sqoop数据导出导入命令
- Oracle11g数据库导入Oracle10g数据库 oracle常用数据导入导出命令
- mysql 数据库的导出导入和一些常用命令与远程访问到MYsql
- MYSQL导入导出数据常用命令
- 数据库常用的一些命令(导出,导入,新建用户及授权等等)
- 常用mysql导入导出数据的命令
- sqoop1 常用命令及hive导入参数参考
- ORACLE数据导入导出里的EXP/IMP 命令参数
- sqoop数据导出导入命令
- mysqldump等常用导入导出命令及参数介绍
- Oracle 数据导入和导出(备份和恢复) 常用命令