100
微信
Sqoop__数据传输软件_开发人员指南_E-MapReduce-阿里云
Sqoop 是一款用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件。
安装 Sqoop
注意:目前,E-MapReduce 从版本 1.3 开始都会默认支持 Sqoop 组件,您无需再自行安装,可以跳过本节。
若您使用的 E-MapReduce 的版本低于 1.3,则还没有集成 Sqoop,如果需要使用请参考如下的安装方式。
从官网下载 Sqoop 1.4.6 版本(点击下载)。若下载的
sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
无法打开,也可以使用镜像地址https://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
进行下载,请执行如下命令:wget https://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__ha doop-2.0.4-alpha.tar.gz
执行如下命令,将下载下来的
sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
解压到 Master 节点上:tar zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
要从 Mysql 导数据需要安装 Mysql driver。请从官网下载最新版本(点击下载),或执行如下命令进行下载(此处以版本 5.1.38 为例):
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz
解压以后把 jar 包放到 Sqoop 目录下的 lib 目录下。
数据传输
常见的使用场景如下所示:
Mysql -> HDFS
HDFS -> Mysql
Mysql -> Hive
Hive -> Mysql
使用 SQL 作为导入条件
注意:在执行如下的命令前,请先切换你的用户为 Hadoop。
su hadoop
从 Mysql 到 HDFS
在集群的 Master 节点上执行如下命令:
sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <hdfs-dir>
参数说明:
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/。
dbname:数据库的名字,例如:user。
username:数据库登录用户名。
password:用户对应的密码。
tablename:Mysql 表的名字。
hdfs-dir:HDFS 的写入目录,例如:/user/hive/result。
更加详细的参数使用请参考 Sqoop Import。
从 HDFS 到 Mysql
需要先创建好对应 HDFS 中的数据结构的 Mysql 表,然后在集群的 Master 节点上执行如下命令,指定要导的数据文件的路径。
sqoop export --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <hdfs-dir>
参数说明:
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/。
dbname:数据库的名字,例如:user。
username:数据库登录用户名。
password:用户对应的密码。
tablename:Mysql 的表的名字。
hdfs-dir:要导到 Mysql 去的 HDFS 的数据目录,例如:/user/hive/result.
更加详细的参数使用请参考 Sqoop Export。
从 Mysql 到 Hive
导入的同时也新建一个 Hive 表,执行如下命令:
sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --fields-terminated-by "t" --lines-terminated-by "n" --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>
参数说明:
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/。
dbname:数据库的名字,例如:user。
username:据库登录用户名。
password:用户对应的密码。
tablename:Mysql 的表的名字。
hdfs-dir:要导到 Mysql 去的 HDFS 的数据目录,例如:/user/hive/result。
hive-tablename:对应的 Hive 中的表名,可以是 xxx.yyy。
更加详细的参数使用请参考 Sqoop Import。
从 Hive 到 Mysql
请参考上面的从 HDFS 到 Mysql的命令,只需要指定 Hive 表对应的 HDFS 路径就可以了。
从 Mysql 到 OSS
类似从 Mysql 到 HDFS,只是 —target-dir 不同。在集群的 Master 节点上执行如下命令:
注意: OSS 地址中的 host 有内网地址、外网地址和 VPC 网络地址之分。如果用经典网络,需要指定内网地址,杭州是 oss-cn-hangzhou-internal.aliyuncs.com,VPC 要指定 VPC 内网,杭州是 vpc100-oss-cn-hangzhou.aliyuncs.com。
sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir>
参数说明:
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/。
dbname:数据库的名字,例如:user。
username:数据库登录用户名。
password:用户对应的密码。
tablename:Mysql 表的名字。
oss-dir:OSS 的写入目录,例如:oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result
。
更加详细的参数使用请参考 Sqoop Import。
6. 从Oss到Mysql
类似mysql到hdfs,只是—export-dir不同。需要创建好对应oss中的数据结构的Mysql表
然后在集群的Master节点上执行如下:指定要导的数据文件的路径
sqoop export --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <oss-dir>
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/
dbname:数据库的名字,例如:user
username:数据库登录用户名
password:用户对应的密码
tablename:Mysql的表的名字
oss-dir:oss的写入目录,例如:oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result
注意: oss地址host有内网地址,外网地址,vpc网络地址之分。如果 用经典网络,需要指定内网地址,杭州是oss-cn-hangzhou-internal.aliyuncs.com,vpc要指定vpc内网,杭州是vpc100-oss-cn-hangzhou.aliyuncs.com
更加详细的参数使用请参考,Sqoop Export
使用 SQL 作为导入条件
除了指定 Mysql 的全表导入,还可以写 SQL 来指定导入的数据,如下所示:
sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --query <query-sql> --split-by <sp-column> --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>
参数说明:
dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/。
dbname:数据库的名字,例如:user。
username:数据库登录用户名。
password:用户对应的密码。
query-sql:使用的查询语句,例如:”SELECT * FROM profile WHERE id>1 AND $CONDITIONS”。记得要用引号包围,最后一定要带上 AND $CONDITIONS。
sp-column:进行切分的条件,一般跟 Mysql 表的主键。
hdfs-dir:要导到 Mysql 去的 HDFS 的数据目录,例如:/user/hive/result。
hive-tablename:对应的 Hive 中的表名,可以是 xxx.yyy。
更加详细的参数使用请参考 Sqoop Query Import。
集群和其他数据库的网络配置请参考,用Aliyun E-MapReduce集群的 Sqoop 工具和数据库同步数据如何配置网络。
最后更新:2016-11-23 16:03:59
上一篇:
HBase 开发手册__开发人员指南_E-MapReduce-阿里云
下一篇:
阿里云数据集成__数据传输软件_开发人员指南_E-MapReduce-阿里云
专题&关键词配置__舆情分析_快速开始_公众趋势分析-阿里云
CDN API概述__API 手册_CDN-阿里云
通知__使用须知_用户指南_弹性伸缩-阿里云
获取产品类型信息__接口列表_服务器端API_阿里云物联网套件-阿里云
UploadCACertificate__ServerCertificate相关API_API 参考_负载均衡-阿里云
ODPSReader__Reader插件_使用手册_数据集成-阿里云
推通知给iOS设备__推送相关_API 列表_OpenAPI 2.0_移动推送-阿里云
权限相关常见问题__常见问题_大数据开发套件-阿里云
多实例并发__命令行工具_批量计算-阿里云
RouteTableSetType__数据类型_API 参考_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云