すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:EMRクラスターでApache Sqoopを使用して、OSS-HDFSに保存されているデータへの読み取りおよび書き込みアクセスを実装する

最終更新日:May 30, 2025

このトピックでは、E-MapReduce (EMR) クラスターでApache Sqoopを使用して、OSS-HDFSに格納されているデータへの読み取りおよび書き込みアクセスを実装する方法について説明します。

前提条件

  • EMR 3.42.0以降、またはEMR 5.8.0以降のクラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。

  • バケットのOSS-HDFSが有効になり、OSS-HDFSにアクセスする権限が付与されます。 詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。

手順

  1. EMRクラスターに接続します。

    1. EMRコンソールにログインします。 左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。

    2. 作成したEMRクラスターをクリックします。

    3. [ノード] タブをクリックし、ノードグループの左側にあるプラスアイコン (+) をクリックします。

    4. ECSインスタンスのIDをクリックします。 [インスタンス] ページで、インスタンスIDの横にある [接続] をクリックします。

    SSHキーペアまたはSSHパスワードを使用してWindowsまたはLinuxでクラスターにログインする方法の詳細については、「クラスターにログインする」をご参照ください。

  2. データをOSS-HDFSからMySQLにインポートします。

    sudo sqoopインポート -- 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>
    • 次の表に、上記のコマンドのパラメーターを示します。

      パラメーター

      必須

      説明

      ドブリ

      必須

      データベースへのアクセスに使用されるURI。 例: 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に設定されている場合は、このパラメーターを指定する必要があります。

      modeパラメーターをappendに設定すると、Apache Sqoopはデータを一時ディレクトリにインポートし、ファイルの名前を変更して宛先ディレクトリに格納します。 宛先ディレクトリがOSS-HDFSに存在する場合、Apache Sqoopはディレクトリにデータをインポートしたり、ディレクトリ内のデータを上書きしたりしません。

      col

      任意

      増分インポートシナリオでインポートする行を決定するために使用するチェック列。

      モード

      任意

      増分インポートモード。 有効な値 : append および lastmodified

      • append: データは増分列に基づいて増分でインポートされます。

      • lastmodified: データは時間列に基づいて増分でインポートされます。

      value

      任意

      前回の増分インポートのチェック列の最大値。

      フォーマット

      任意

      オブジェクトを格納する形式です。 有効な値は、avrodatafilesequencefiletextfile (デフォルト) 、parquetfileです。

      集計

      任意

      MapReduceタスクの数。

    • 例:

      次のサンプルコードは、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