web-dev-qa-db-ja.com

sqoopの--directモードとは何ですか?

私の理解によると、sqoopは、データベースからHDFS、Hive、またはHBASEにテーブル/データをインポートまたはエクスポートするために使用されます。

また、単一のテーブルまたはテーブルのリストを直接インポートできます。内部的にmapreduceプログラム(私はマップタスクのみだと思います)が実行されます。

私の疑問は、sqoopダイレクトとは何ですか?sqoopダイレクトオプションをいつ使用するかです。

7
Raj

Sqoopのドキュメントを読んでください!

  • 一般原則は、輸入の場合は ここ 、輸出の場合は そこ にあります。

一部のデータベースは、データベース固有のデータ移動ツール(...)を使用して、より高性能な方法でimportsを実行できます。


一部のデータベースは、エクスポートにも(...)の直接モードを提供します

特定の各RDBMSでのダイレクトモードの使用、インストール要件、利用可能なオプション、および制限の詳細については、セクション25を参照してください。

結論:「ダイレクトモード」とは、データベースごとに異なることを意味します。
MySQLまたはPostgreSQLの場合、バルクローダー/アンローダーユーティリティに関連します(つまり、JDBCを完全にバイパスします)。 Oracleの場合、これは「ダイレクトパスINSERT」に関連します。つまり、JDBCを使用しますが、非トランザクションモードです(したがって、一時テーブルを使用する方がよいでしょう。そうしないと、PKと破損したテーブル)

短く正確に言うと、マッパーやレデューサーを実行しない高速インポートのモードです。

sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --direct

ノート:

  1. --directはmysqlとpostgresqlでのみサポートされています。
  2. Sqoopのダイレクトモードは、BLOBCLOB、またはLONGVARBINARY列のインポートをサポートしていません。
3
Subash

From クラスターとクラウドストレージでのビッグデータの管理

デフォルトでは、SqoopはJDBCを使用してデータベースに接続します。ただし、データベースによっては、より高速なデータベース固有のコネクタが使用できる場合があります。これは、 -directオプション を使用して使用できます。

したがって、デフォルトとは異なるデータベースコネクタを使用する場合は、-directオプションを使用します。

2

Sqoopで--directオプションを指定すると、パフォーマンスを向上させることができます

ただし、直接を使用するとソース/ターゲットDBがダウンする可能性があるため、非優先ジョブには使用しないでください。

http://archive.cloudera.com/docs-backup/sqoop/_direct_mode_imports.html

1
saranvisa

--direct-直接インポートの高速パスを使用する

--direct引数 を指定することにより、Sqoopが直接インポートチャネルを試行するように指定します。このチャネルは、JDBCを使用するよりもパフォーマンスが高い場合があります。

MySQLの場合:

MySQL Direct Connectorを使用すると、SQLの選択と挿入の代わりに、mysqldumpおよびmysqlimportツール機能を使用して、MySQLとの間でより高速なインポートおよびエクスポートが可能になります。

特定の各RDBMSでのダイレクトモードの使用、インストール要件、使用可能なオプション、および制限の詳細については、 セクション25「特定のコネクタに関する注意事項」を参照してください。

1
Ronak Patel