2012-04-11 6 views
0

これはmapreduce出力に関する基本的な質問です。マップジョブからファイル全体を出力するにはどうすればよいですか?

xmlファイルを取り込み、apache fopを使ってpdfを作成するマップ関数を作成しようとしています。しかし、私はそれが(キー、値)のペアとして出て行くことを知っているので、それを出力する方法として少し混乱しています。

私もこれを行うためにストリーミングを使用していません。

+1

何を試しましたか?あなたのコードを手助けする方法のいくつかを飛び越えていくと良いでしょう。 –

答えて

0

map-reduceのポイントは、通常はメモリに収まらない大量のデータに取り組むことです。そのため、入出力は通常、何らかの形でディスク(a.k.a.ファイル)に格納されます。このフォームへのマッパーの

ライト出力:keyは、(ファイル名を保つTextでファイル名です 入力 - 出力は、私はこれを試していないが、これは私が何をするのかであるkey-value format

(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output) 

で指定する必要がありますユニーク)、valueはfopの出力でTextOutputFormatです。 TextOutputFormatを使用して書き込みます。

提案:

私はあなたのユースケースは、単に入力XMLを読んで(多分そのデータに何らかの操作をしている)とfopを使用してPDFファイルにデータを書き込んでいると仮定しています。私はこれが最初の場所でハーフープの使用事例であるとは思わない...あなたがしたいことは何でもバッチスクリプトで行うことができる。あなたのXMLファイルの大きさはどれくらいですか?何個のxmlファイルを処理する必要がありますか?

EDIT:

SequenceFileOutputFormatSequenceFileに書き込みます。 SequenceFileには、格納されているテキストとともに独自のヘッダーとその他のメタデータがあります。また、キー:値の形式でデータを格納します。

SequenceFile Common Header 

    version - A byte array: 3 bytes of magic header 'SEQ', followed by 1 byte of actual version no. (e.g. SEQ4 or SEQ6) 
    keyClassName - String 
    valueClassName - String 
    compression - A boolean which specifies if compression is turned on for keys/values in this file. 
    blockCompression - A boolean which specifies if block compression is turned on for keys/values in this file.  
    compressor class - The classname of the CompressionCodec which is used to compress/decompress keys and/or values in this SequenceFile (if compression is enabled).  
    metadata - SequenceFile.Metadata for this file (key/value pairs) 
    sync - A sync marker to denote end of the header. 

あなたが破損し、出力PDFファイルで終わるだろうとSequenceFile破滅アプリケーションを使用します。試してthisを試してみてください。

あなたにはたくさんの入力ファイルがあります。これは、hadoopが吸うところです。 (read this)。それでも私は、すべての文書に1つずつfopを呼び出すスクリプトを使って、あなたが望む操作を行うことができると感じています。複数のノードがある場合は、同じスクリプトを実行しますが、異なる入力文書のサブセットで実行してください。私を信頼してください。これはマップを作成して減らすことに伴うオーバーヘッドを考慮したものです(必要がなくなりません)。

+0

私たちがhadoopを使用しようとしているのは、一度に約1,000,000個のpdfsを生成する必要があるからです。今、私は[link](http://developer.yahoo.com/hadoop/tutorial/module4.html)にある入門と出力についてもう少し説明するチュートリアルを見ました。だから、出力のために、私はおそらく私はSequenceFileOutputFormatを使用することができると思っていますが、私は本当にどのように正確に出力することはできません以来、私はまた戻り値のnull値を置いて、キーを返したが、その場所は覚えていない別の例に行きました – user1325360

+0

@ user1325360上記の私の編集を参照してください –

関連する問題