2017-06-29 4 views
0

sqoopは、テーブル主キーまたは--split-by <columns>を使用してRDBMSからHDFSに転送します。デフォルトのマッパー数は4であると思います。しかし、--directによって、マッパーを使わずに転送を高速化することができます。私の質問は、マッパーが使用されていない場合、SqoopがHadoopフレームワークでの転送をどのように処理できるかです。どのようにダイレクトモードがsqoopで動作していますか?

答えて

1

、sqoop docsあたりとしてMySQLダイレクトコネクタは、より速くインポートおよびエクスポートに/ MySQLのから代わりにSQLの選択および挿入の mysqldumpmysqlimportツールの機能を使用できます。

通常、JDBC経由で複数のマッパーを使用して範囲クエリを実行するよりも高速です。

0

ツールを使用して内部で--direct引数を持つSqoopツールを使用してMySQLからデータをインポートします。 mysqldumpは、基本的にはMySQLの組み込みのエクスポートツールであるか、データベースのバックアッププログラムとも言えます。このユーティリティは論理バックアップを実行し、元のデータベースオブジェクト定義とテーブルデータを再現するために実行できる一連のSQL文を生成します。 mysqldumpコマンドは、CSV、その他の区切り文字付きテキスト、またはXML形式で出力を生成することもできます。

区切り文字がmysqldumpで使用される区切り文字と完全に一致する場合、Sqoopはmysqldumpの出力からHDFSに直接データをコピーするファストパスを使用します。それ以外の場合、Sqoopはmysqldumpの出力をフィールドに解析し、ユーザ指定のデリミタセットにトランスコードします。これにより追加の処理が行われるため、パフォーマンスが低下する可能性があります。便宜上、--mysql-delimiters引数は、すべての出力区切り文字がmysqldumpの形式と一致するように設定します。

このリンクは、詳細を理解するのに役立ちます。

http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.html https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

関連する問題