Sqoop-import
Sqoop-インポート
この章では、MySQLデータベースからHadoop HDFSにデータをインポートする方法について説明します。 「インポートツール」は、RDBMSからHDFSに個々のテーブルをインポートします。 テーブルの各行は、HDFSのレコードとして扱われます。 すべてのレコードは、テキストファイルにテキストデータとして保存されるか、Avroおよびシーケンスファイルにバイナリデータとして保存されます。
構文
次の構文は、HDFSにデータをインポートするために使用されます。
例
MySQLデータベースサーバーのuserdbというデータベースにある、 emp 、 emp_add 、および emp_contact という名前の3つのテーブルの例を見てみましょう。
3つのテーブルとそのデータは次のとおりです。
emp:
id | name | deg | salary | dept |
---|---|---|---|---|
1201 | gopal | manager | 50,000 | TP |
1202 | manisha | Proof reader | 50,000 | TP |
1203 | khalil | php dev | 30,000 | AC |
1204 | prasanth | php dev | 30,000 | AC |
1204 | kranthi | admin | 20,000 | TP |
emp_add:
id | hno | street | city |
---|---|---|---|
1201 | 288A | vgiri | jublee |
1202 | 108I | aoc | sec-bad |
1203 | 144Z | pgutta | hyd |
1204 | 78B | old city | sec-bad |
1205 | 720X | hitec | sec-bad |
emp_contact:
id | phno | |
---|---|---|
1201 | 2356742 | gopal@tp.com |
1202 | 1661663 | manisha@tp.com |
1203 | 8887776 | khalil@ac.com |
1204 | 9988774 | prasanth@ac.com |
1205 | 1231231 | kranthi@tp.com |
テーブルのインポート
Sqoopツール「インポート」を使用して、テーブルからテーブルデータをテキストファイルまたはバイナリファイルとしてHadoopファイルシステムにインポートします。
次のコマンドを使用して、 emp テーブルをMySQLデータベースサーバーからHDFSにインポートします。
正常に実行されると、次の出力が得られます。
HDFSでインポートされたデータを確認するには、次のコマンドを使用します。
ターゲットディレクトリへのインポート
Sqoopインポートツールを使用して、テーブルデータをHDFSにインポートするときにターゲットディレクトリを指定できます。
以下は、Sqoopインポートコマンドのオプションとしてターゲットディレクトリを指定する構文です。
次のコマンドを使用して、 emp_add テーブルデータを「/queryresult」ディレクトリにインポートします。
次のコマンドは、 emp_add テーブルの/queryresultディレクトリにインポートされたデータを確認するために使用されます。
カンマ(、)で区切られたフィールドを持つemp_addテーブルデータが表示されます。
テーブルデータのサブセットのインポート
Sqoopインポートツールの「where」句を使用して、テーブルのサブセットをインポートできます。 各データベースサーバーで対応するSQLクエリを実行し、結果をHDFSのターゲットディレクトリに格納します。
where句の構文は次のとおりです。
次のコマンドは、 emp_add テーブルデータのサブセットをインポートするために使用されます。 サブセットクエリは、セカンドラバード市に住む従業員IDと住所を取得することです。
次のコマンドを使用して、 emp_add テーブルから/wherequeryディレクトリにインポートされたデータを確認します。
コンマ(、)で区切られたフィールドを持つ emp_add テーブルデータが表示されます。
増分インポート
増分インポートは、テーブルに新しく追加された行のみをインポートする手法です。 増分インポートを実行するには、「増分」、「チェック列」、「最終値」オプションを追加する必要があります。
次の構文は、Sqoop importコマンドの増分オプションに使用されます。
次のコマンドを使用して、 emp テーブルで増分インポートを実行します。
次のコマンドは、 emp テーブルからHDFS emp/ディレクトリにインポートされたデータを確認するために使用されます。
コンマ(、)で区切られたフィールドを持つ emp テーブルデータが表示されます。
次のコマンドを使用して、 emp テーブルから変更または新しく追加された行を表示します。
コンマ(、)で区切られたフィールドを使用して、 emp テーブルに新しく追加された行を表示します。