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

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

最終更新日:Dec 20, 2023

このトピックでは、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コンソールにログインします。 左側のナビゲーションウィンドウで、[ECS上のEMR] をクリックします。
    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