2013-04-30 9 views
33

Big Dataプロジェクトの場合、繰り返しワークロードのメモリ内計算などの便利な機能を持つsparkを使用する予定です。ローカルファイルまたはHDFS上で実行できます。Sparkのgzipサポート

しかし、公式のドキュメントでは、gzipファイルの処理方法に関するヒントは見つかりません。実際には、解凍されたファイルの代わりに.gzファイルを処理するのが非常に効率的です。

gzipファイルの読み込みを手動で実装する方法はありますか.gzファイルを読み込むときに既に自動的に解凍されていますか?

答えて

66

スパークのScalaプログラミング・ガイドのsection on "Hadoop Datasets"

スパークは、Hadoopの分散ファイルシステム(HDFS)またはローカルのファイルシステムを含む、Hadoopのでサポートされている他のストレージシステム(に格納されている任意のファイルから配信されたデータセットを作成することができ、 Amazon S3、Hypertable、HBaseなど)が含まれます。 Sparkは、テキストファイル、シーケンスファイル、およびその他のHadoop InputFormatをサポートしています。

gzip入力ファイルのサポートは、Hadoopと同じように動作するはずです。たとえば、sc.textFile("myFile.gz")は、gzipで圧縮されたファイルを自動的に解凍して読み込む必要があります(textFile()は実際にはを使用するgzip圧縮ファイルをサポートするimplementedです)。

コメントで@ニック・chammasで述べたように:あなたはgzipされたファイルにsc.textFile()を呼び出す場合、スパークは(0.9.0のような)のみ1つのパーティションでRDD あなたを与えること

ノートは、 。これは、 のgzippedファイルがnot splittableであるためです。あなたは何とかRDD を再分割していない場合は、そのRDD上のすべての操作は、シングルコア

+45

に制限されます私はあなたがgzipされたファイルに対して 'sc.textFileを()'を呼び出す場合は、スパークが得られますのでご注意ます1パーティションしかないRDD(0.9.0時点)。これは、gzippedファイルは[分割不可](http://mail-archives.apache.org/mod_mbox/spark-user/201310.mbox/%[email protected] .com%3E)。何とかRDDを再分割しないと、そのRDD上の操作は単一のコアに限定されます。 –

+3

'logs = sc.textFile(" logs/*。bz2 ")'しようとすると、後続の 'logs.count()'でエラーが発生します。なぜどんなアイデア? – zbinsd

+0

@zbinsdあなたは最後にそれを理解しましたか?私は、tar.gzファイルをロードするときに次のエラーが発生しています:JsonParseException:不正な文字((CTRL-CHAR、コード0)):トークンの間に通常の空白(¥r、¥n、¥t)のみが許可されます – Leon

関連する問題