本文介绍Sqoop如何以EMR集群的方式读写OSS-HDFS服务的数据。
前提条件
已创建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群,并在创建时选择了Sqoop。具体步骤,请参见创建集群。
已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。
操作步骤
登录EMR集群。
单击创建的EMR集群。
单击节点管理页签,然后单击节点组左侧的。
单击ECS ID。在ECS实例页面,单击实例ID右侧的远程连接。
如果您希望使用SSH方式(SSH密钥对或SSH密码)在Windows和Linux环境中登录集群,请参见登录集群。
将OSS-HDFS数据导入MySQL。
sudo sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> --check-column <col> --incremental <mode> --last-value <value> -as <format> -m <count>
参数说明
参数
是否必选
说明
dburi
必选
数据库的访问链接,例如
jdbc:mysql://192.168.xxx.xxx:3306/
。dbname
必选
数据库的名称。
username
必选
数据库登录用户名。
password
必选
数据库登录密码。
tablename
必选
MySQL表的名称。
oss-dir
必选
读取或写入OSS-HDFS服务指定路径下的数据,例如
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
。oss-tmpdir
可选
临时写入目录。指定mode为append模式时,需要指定该参数。
采用append模式后,Sqoop会先将数据导入临时目录,然后将文件重命名为正常目标目录。如果目标目录已经存在于HDFS中,则Sqoop拒绝导入并覆盖该目录的内容。
col
可选
增量导入场景的检查列。
mode
可选
增量导入模式,支持append和lastmodified两种模式。
append模式:基于递增列的增量数据导入。
lastmodified模式:基于时间列的增量数据导入。
value
可选
指定上次增量导入的检查列的最大值。
format
可选
文件存储的格式。取值为avrodatafile、sequencefile、textfile(默认值)、parquetfile。
count
可选
指定MapReduce的任务数。
使用示例
将OSS-HDFS服务examplebucket中指定路径下的数据导入MySQL中的数据库表src_kv。
sqoop import --connect jdbc:mysql://master-1-1/sqoop_test --username root --password password1 --table src_kv -m 1 --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv --as-parquetfile