2016-12-09 8 views
2

私は大きなデータで新しいです! EMRクラスター上で、大量の小さなファイル(pdfとppt/pptx)をスパークで大量に保存する方法と、どのように処理するかについていくつか質問があります。大量の小さなファイルをスパークで保存して処理する

私の目標は、データ(pdfとpptx)をHDFS(またはクラスタのあるタイプのデータストア)に保存し、このファイルからsparkからコンテンツを抽出し、elasticsearchやリレーショナルデータベースに保存することです。

  1. HDFSにデータを保存するときに小さなファイルの問題を読んだことがありました。大量のpdf & pptxファイル(最大サイズ100〜120 MB)を節約する最も良い方法は何ですか? Sequence FilesとHAR(hadoopアーカイブ)について読んだことがありますが、どれも正確にはわかりませんし、何がベストかを理解していません。

  2. このファイルを処理する最適な方法は何ですか?私はいくつかのソリューションがFileInputFormatまたはCombineFileInputFormatかもしれないことを理解していましたが、再びそれがどのくらい正確であるかはわかりません。私はクラスタがボトルネックの場合に置かれるので、分離されたタスクですべての小さなファイルを実行できないことを知っています。

ありがとう!

+0

私はHadoopでPDFファイルを処理しました。このリンクはhttp://ybhavesh.blogspot.in/2015/12/poc-sensex-log-data-processing-pdf-file.htmlに役立ちます(注:処理はMapreduceで行われた) – Bhavesh

答えて

1

HDFSの代わりにオブジェクトストア(S3など)を使用すると、ファイルに変更や変換を適用する必要はなく、それぞれを単一のオブジェクトまたはBLOBにすることができます標準的なツールを使用し、カスタムクラスやコードでアンパックや再フォーマットする必要はありません)。 次に、boto(s3)のようなpythonツールを使用するか、wholeTextFileまたはbinaryFilesコマンドを使用してsparkを操作し、BytesIO(python)/ ByteArrayInputStream(java)を標準ライブラリを使用して読み込むようにしています。

2)ファイルを処理するときには、アイテムとパーティションの区別があります。 10000個のファイルがある場合は、それぞれ100個のファイルを含む100個のパーティションを作成できます。ヘッダー情報は関連性があり、ファイルごとに異なる可能性があるため、各ファイルは一度に1つずつ処理する必要があります。

関連する問題