1

mapreduceジョブを作成していて、メモリ内のマッパーに渡したい入力があります。

マッパーに入力を渡す通常の方法は、Hdfs(sequencefileinputformatまたはTextfileinputformat)を使用することです。これらのinputformatsには、マッパーにロードおよび分割されるfdfs内のファイルが必要です。

渡す簡単な方法が見つかりません。たとえば、要素のリストをマッパーに渡します。これらの要素をディスクに書き込んでから、fileinputformatを使用する必要があることに気付きました。

解決策はありますか?

私はJavaオフコースでコードを書いています。

ありがとう。

4

1 に答える 1

0

入力フォーマットは、ディスクまたはファイルシステムからデータをロードする必要はありません。HBaseや(http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapred/TableInputFormat.html)などの他のシステムからデータを読み取る入力形式もあり、データがディスク上にあることを意味しません。 。これは、クラスターのすべてのノードで一部のAPIを介して使用できることを意味します。
したがって、独自のロジックでデータを分割する入力形式を実装し(ファイルがなくなるとすぐにそれは独自のタスクになります)、データをレコードに分割する必要があります
。インメモリデータソースは、クラスタのすべてのノードに分散して実行する必要があることに注意してください。また、プロセスからマッパープロセスにデータを渡すための効率的なIPCメカニズムも必要になります。
この珍しい要件につながるあなたのケースが何であるかも知ってうれしいです。

于 2012-07-25T08:09:59.163 に答える