2011-01-10 2 views

答えて

7

オレンジオクトパスが言ったことを念頭に置いて(DDOSに注意してください...)、あなたはDBStorageを見ましたか?

data = LOAD '...' AS (...); 
... 
STORE data INTO DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'INSERT ...'); 
4

私が見る主な問題は、各レデューサーが効果的に同じ時間にデータベースに挿入されることです。

これが問題になると思わない場合は、データベースに直接挿入してHDFSに何も書き込まないように、JDBCなどを使用するcustom Storage methodを書くことをおすすめします。

自分のデータベースでDDoS攻撃を実行することを恐れている場合は、おそらくHDFSでデータを収集し、mysqlに別のバルクロードを実行する方が良いでしょう。

+0

JDBCを使用してUDFを書くの周り方法はありませんように思えます。お気の毒! – Christoph

2

私は現在、PigServer.OpenIteratorとJDBC接続経由で結果をmysqlにロードする組み込みpigアプリケーションを試しています。テストではうまくいきましたが、まだ試したことがありません。これは既に提案されているカスタムストレージメソッドと似ていますが、一点から実行されるため、偶発的なDDOS攻撃は発生しません。あなたは実際にDBサーバーから負荷を実行しないと、ネットワーク転送コストを2倍(クラスタ - >ステージングマシン、ステージングマシン - > DBサーバー)に支払うことになります(私は個人的にDBサーバー)、それは "ファイルを書き出して一括読み込み"オプションと同じです。

1

豚のDBStorageは... Sqoopが行くには良い方法かもしれませんが、すべてのこれらのHadoop関連プロジェクトとして(私見)アップを設定することは困難であるSqoop

+1

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参考にするためのリンクを提供することが望ましいでしょう(http://meta.stackexchange.com/q/8259)。 – Kev

2

を使用してみてください(少なくとも保存するために)うまく動作します。

は貯金と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 (?, ?)'); 
関連する問題