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 | データベースにログオンするために使用するパスワード。 |
| tablename | MySQLテーブルの名前。 |
| 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へのデータのインポート
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-tablename | Hiveテーブルの名前。 |
パラメーターの詳細については、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へのデータのインポート
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-tablename | Hiveテーブルの名前。 |
パラメーターの詳細については、Sqoop User Guideの 7.2. Syntax セクションをご参照ください。