本文介绍Sqoop如何以EMR集群的方式读写OSS-HDFS服务的数据。

前提条件

操作步骤

  1. 登录EMR集群。
    1. 登录EMR on ECS控制台
    2. 单击创建的EMR集群。
    3. 单击节点管理页签,然后单击节点组左侧的+
    4. 单击ECS ID。在ECS实例页面,单击实例ID右侧的远程连接
    如果您希望使用SSH方式(SSH密钥对或SSH密码)在Windows和Linux环境中登录集群,请参见登录集群
  2. 将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可选文件存储的格式。取值为avrodatafilesequencefiletextfile(默认值)、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