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

E-MapReduce:概要

最終更新日:Jan 11, 2025

Apache Sqoopは、Apache Hadoopと構造化データセット(リレーショナルデータベースなど)間でバルクデータを効率的に転送するために設計されたツールです。

背景情報

MySQLから HDFSへのデータのインポート

クラスターのマスターノードで、次のコマンドを実行します。
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <hdfs-dir> --split-by <split-column> --check-column <col> --incremental <mode> --last-value <value>
パラメーター説明
dburiデータベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbnameデータベースの名前。
usernameデータベースにログオンするために使用するユーザー名。
passwordデータベースにログオンするために使用するパスワード。
tablenameMySQLテーブルの名前。
hdfs-dirデータをインポートする Hadoop Distributed File System (HDFS) ディレクトリ。例: /user/hive/result
split-columnオプション。タスクを分割するために使用する列。デフォルト値はプライマリキー列です。
colオプション。増分インポートシナリオでインポートする行を決定するために使用する列。
modeオプション。増分インポートモード。有効な値: append および lastmodified。
valueオプション。前回の増分インポートにおける列の最大値。

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。

HDFSから MySQLへのデータのインポート

HDFSのデータ構造に準拠する MySQLテーブルを作成した後、クラスターのマスターノードで次のコマンドを実行します。
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <hdfs-dir>
パラメーター説明
dburi
データベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbname
データベースの名前。
username
データベースにログオンするために使用するユーザー名。
password
データベースにログオンするために使用するパスワード。
tablename
MySQLテーブルの名前。
hdfs-dir
データをインポートする Hadoop Distributed File System (HDFS) ディレクトリ。例: /user/hive/result

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。

MySQLから Hiveへのデータのインポート

クラスターのマスターノードで次のコマンドを実行します。
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --check-column <col> --incremental <mode> --last-value <value> --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>
パラメーター説明
dburi
データベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbname
データベースの名前。
username
データベースにログオンするために使用するユーザー名。
password
データベースにログオンするために使用するパスワード。
tablename
MySQLテーブルの名前。
col
オプション。増分インポートシナリオでインポートする行を決定するために使用する列。
mode
オプション。増分インポートモード。有効な値: append および lastmodified。
value
オプション。前回の増分インポートにおける列の最大値。
hdfs-dir
データをインポートする Hadoop Distributed File System (HDFS) ディレクトリ。例: /user/hive/result
hive-tablenameHiveテーブルの名前。

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。

Hiveから MySQLへのデータのインポート

HDFSから MySQLにデータをインポートするために使用するのと同じコマンドを使用できます。 MySQLにデータをインポートする Hiveテーブルの HDFSディレクトリを指定する必要があります。詳細については、HDFSから MySQLへのデータのインポート をご参照ください。

MySQLから OSSへのデータのインポート

クラスターのマスターノードで次のコマンドを実行します。
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>
パラメーター説明
dburi
データベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbname
データベースの名前。
username
データベースにログオンするために使用するユーザー名。
password
データベースにログオンするために使用するパスワード。
tablename
MySQLテーブルの名前。
oss-dirデータをインポートする Object Storage Service (OSS) ディレクトリ。例: oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result
oss-tmpdirデータを一時的に書き込む OSSディレクトリ。mode パラメーターを append に設定する場合は、このパラメーターを指定する必要があります。

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

col
オプション。増分インポートシナリオでインポートする行を決定するために使用する列。
mode
オプション。増分インポートモード。有効な値: append および lastmodified。
value
オプション。前回の増分インポートにおける列の最大値。

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。

OSSから MySQLへのデータのインポート

OSSのデータ構造に準拠する MySQLテーブルを作成した後、クラスターのマスターノードで次のコマンドを実行します。
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --export-dir <oss-dir>
パラメーター説明
dburi
データベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbname
データベースの名前。
username
データベースにログオンするために使用するユーザー名。
password
データベースにログオンするために使用するパスワード。
tablename
MySQLテーブルの名前。
oss-dir
データをインポートする Object Storage Service (OSS) ディレクトリ。例: oss://<accessid>:<accesskey>@<bucketname>.oss-cn-hangzhou-internal.aliyuncs.com/result

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。

SQLステートメントを使用したデータのインポート

次のコマンドを実行します。
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --query <query-sql> --split-by <sp-column> --hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>
パラメーター説明
dburi
データベースのアクセス URL。例: jdbc:mysql://192.168.**.**:3306/
dbname
データベースの名前。
username
データベースにログオンするために使用するユーザー名。
password
データベースにログオンするために使用するパスワード。
query-sqlインポートするデータを選択するために使用する SQLステートメント。例: SELECT * FROM profile WHERE id>1 AND \$CONDITIONS
sp-column分割する列の名前。ほとんどの場合、このパラメーターの値は MySQLテーブルのプライマリキーです。
hdfs-dir
データをインポートする Hadoop Distributed File System (HDFS) ディレクトリ。例: /user/hive/result
hive-tablenameHiveテーブルの名前。

パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。