2014-01-09 19 views
11

私はHadoopにHDFSから画像を読み込むクラスImageInputFormatを持っています。 InputFormatをSparkで使用するには?Apache SparkでHadoop InputFormatsを使用するには?

は、ここに私のImageInputFormat次のとおりです。

SparkContext
public class ImageInputFormat extends FileInputFormat<Text, ImageWritable> { 

    @Override 
    public ImageRecordReader createRecordReader(InputSplit split, 
        TaskAttemptContext context) throws IOException, InterruptedException { 
     return new ImageRecordReader(); 
    } 

    @Override 
    protected boolean isSplitable(JobContext context, Path filename) { 
     return false; 
    } 
} 

答えて

13

hadoopFileと呼ばれる方法があります。それはインタフェースを実装するクラスを受け入れる。org.apache.hadoop.mapred.InputFormat

その説明は、「任意のInputFormatを持つHadoopファイルのRDDを得る」と述べています。

Spark Documentationもご覧ください。

+0

ありがとう〜私はそれを把握今すぐ出てください。代わりに、新しいAPIHadoopFileを使用してjob.Butを実行しますが、これらの画像はすべてhadoopRDDに保存されるか、RDDの容量を設定できます。また、RDDがいっぱいになると残りのデータはディスクに保存されます。データが大きすぎると、パフォーマンスに影響が及ぶでしょうか?入力の500G画像があります。ありがとうございました。 – hequn8128

+0

申し訳ありませんが、私は実際にスパークの専門家ではありません。私は誰かがそれに答えることを願っています。 –

2

質問:画像はすべてhadoopRDDに保存されますか? Ans:はい、スパークに保存されるものはすべてrddsです

質問:RDDの容量を設定できます.RDDがいっぱいになると残りのデータはディスクに保存されますか?

スパークのデフォルトのストレージレベルは(StorageLevel.MEMORY_ONLY)、スペース効率の良いMEMORY_ONLY_SERを使用します。 sparkのドキュメント>スカラープログラミング> RDD持続性を参照してください

質問:データが大きすぎるとパフォーマンスに影響が及ぶでしょうか? 回答:データサイズが増加すると、パフォーマンスにも影響します。

PS:スパーク・フレームワークについての質問に言及するとき、クラスタのサイズは、使用しているRAM容量は、次回、それが最良の答えを言って役立つくらいになります言及してください:)

+0

ありがとうございます!ちょっと前に、私はjava.lang.OutOfMemoryErrorについて疑問を抱きました。Javaのヒープスペースです。あなたの回答によると、ストレージレベルの設定が問題になる可能性があります!私のクラスターには、1つのマスターと11のスレーブがあります。各ノードには6Gのメモリがあります。私のプログラムでは、spark.executor.memoryを3gに設定しました。処理されるデータは約22gで、10000個の画像が含まれています。ありがとうございました:) – hequn8128

関連する問題