このトピックでは、E-MapReduce (EMR) クラスターでApache Sqoopを使用して、OSS-HDFSに格納されているデータへの読み取りおよび書き込みアクセスを実装する方法について説明します。
前提条件
EMR 3.42.0以降、またはEMR 5.8.0以降のクラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。
バケットのOSS-HDFSが有効になり、OSS-HDFSにアクセスする権限が付与されます。 詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。
手順
EMRクラスターに接続します。
EMRコンソールにログインします。 左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
作成したEMRクラスターをクリックします。
[ノード] タブをクリックし、ノードグループの左側にあるプラスアイコン (
) をクリックします。 ECSインスタンスのIDをクリックします。 [インスタンス] ページで、インスタンスIDの横にある [接続] をクリックします。
SSHキーペアまたはSSHパスワードを使用してWindowsまたはLinuxでクラスターにログインする方法の詳細については、「クラスターにログインする」をご参照ください。
データを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
任意
前回の増分インポートのチェック列の最大値。
フォーマット
任意
オブジェクトを格納する形式です。 有効な値は、avrodatafile、sequencefile、textfile (デフォルト) 、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