11

Pigからmysqlなどのデータベースに結果を直接エクスポートする方法はありますか?

4

5 に答える 5

7

Orangeoctopus が言ったことを念頭に置いて (DDOS に注意してください...)、DBStorageを調べましたか?

data = LOAD '...' AS (...);
...
STORE data INTO DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'INSERT ...');
于 2011-01-11T18:56:12.807 に答える
4

私が見る主な問題は、各レデューサーが事実上ほぼ同時にデータベースに挿入されることです。

これが問題になると思わない場合は、JDBC (または同様のもの) を使用してデータベースに直接挿入し、HDFS には何も書き込まないカスタム Storage メソッドを作成することをお勧めします。

独自のデータベースで DDOS 攻撃を実行することを恐れている場合は、おそらく HDFS でデータを収集し、mysql への個別の一括ロードを実行する方がよいでしょう。

于 2011-01-10T22:48:40.030 に答える
2

私は現在、PigServer.OpenIteratorと JDBC 接続を介して mysql に結果をロードする組み込みの豚アプリケーションを試しています。テストでは非常にうまく機能しましたが、まだ大規模には試していません。これは、既に提案されているカスタム ストレージ メソッドに似ていますが、単一のポイントから実行されるため、偶発的な DDOS 攻撃はありません。DBサーバーから負荷を実行しない場合、ネットワーク転送コストを効果的に2回支払うことになります(クラスター->ステージングマシン、ステージングマシン-> DBサーバー)(個人的には、DB自体をDBから実行する以外は何も実行しないことを好みます)サーバー)、しかし、それは「ファイルを書き出して一括ロードする」オプションと同じです。

于 2011-01-11T01:04:02.730 に答える
2

Sqoopは良い方法かもしれませんが、これらすべてのHadoop関連プロジェクトとしてセットアップするのは難しいです(IMHO)...

Pig の DBStorage は正常に動作しています (少なくとも保存に関しては)。

PiggyBank と MySQL ドライバーを登録することを忘れないでください。

-- Register Piggy bank
REGISTER /opt/cmr/pig/pig-0.10.0/lib/piggybank.jar;

-- Register MySQL driver
REGISTER /opt/cmr/mysql/drivers/mysql-connector-java-5.1.15-bin.jar

呼び出しの例を次に示します。

-- Store a relation into a SQL table
STORE relation INTO 'unused' USING org.apache.pig.piggybank.storage.DBStorage('com.mysql.jdbc.Driver', 'jdbc:mysql://<mysqlserver>/<database>', '<login>', '<password>', 'REPLACE INTO <table> (<column1>, <column2>) VALUES (?, ?)');
于 2012-10-19T15:22:27.543 に答える
1

Sqoopを使用してみてください

于 2011-09-11T10:24:08.527 に答える