ビッグデータプロジェクトの場合、 spark を使用する予定です。これには、繰り返されるワークロードのメモリ内計算などのニース機能があります。ローカルファイルまたはHDFS上で実行できます。
ただし、公式ドキュメントには、gzip圧縮されたファイルの処理方法に関するヒントが見つかりません。実際には、解凍されたファイルの代わりに.gzファイルを処理することは非常に効率的です。
Gzipされたファイルの読み取りを手動で実装する方法はありますか、または.gzファイルの読み取り時に既に自動的に解凍されますか?
Spark Scalaプログラミングガイドの 「Hadoopデータセット」のセクション :
Sparkは、Hadoop分散ファイルシステム(HDFS)またはHadoopがサポートする他のストレージシステム(ローカルファイルシステム、Amazon S3、Hypertable、HBaseなどを含む)に保存されているファイルから分散データセットを作成できます。 Sparkは、テキストファイル、SequenceFiles、およびその他のHadoop InputFormatをサポートします。
Gzip入力ファイルのサポートは、Hadoopの場合と同じように機能するはずです。たとえば、sc.textFile("myFile.gz")
はgzipで圧縮されたファイルを自動的に解凍して読み込む必要があります(textFile()
は、実際には 実装済み gzip-をサポートするHadoopのTextInputFormat
圧縮ファイル)。
コメントで@ nick-chammasが言及したように:
gzipされたファイルで
sc.textFile()
を呼び出すと、Sparkは0.9.0の時点で1つのパーティションのみを持つRDDを提供します。これはgzipされたファイルが not splittable 。どういうわけかRDDを再分割しない場合、そのRDDでの操作はシングルコアに制限されます