本文介绍Sqoop如何以EMR集群的方式读写OSS-HDFS服务的数据。
前提条件
- 已创建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群。具体步骤,请参见创建集群。
- 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。
操作步骤
- 登录EMR集群。
- 登录EMR on ECS控制台。
- 单击创建的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。
sudo 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
- 参数说明