私はいくつかのjsonファイルからtarに圧縮してSpark RDDを作成しようとしています。 例えば、私は3つのファイル 複数のファイルを読み込み、tar.gzアーカイブでSparkに圧縮
file1.json
file2.json
file3.json
を持っており、これらは
archive.tar.gz
に含まれています。
jsonファイルからデータフレームを作成したいとします。問題は、Sparkがjsonファイルを正しく読み取っていないことです。 sqlContext.read.json("archive.tar.gz")
またはsc.textFile("archive.tar.gz")
を使用してRDDを作成すると、文字化け/余分な出力が発生します。
Sparkに複数のファイルを含むgzipアーカイブを扱う方法はありますか?
UPDATE
私は物事が動作して取得することができたRead whole text files from a compression in Sparkへの回答で指定されたメソッドを使用しますが、この方法は、大tar.gz形式のアーカイブ(> 200メガバイト圧縮)などに適しているとは思えませんアプリケーションは大規模なアーカイブサイズで窒息します。私が扱っているアーカイブの中には、圧縮後に2GBまでのサイズがありますので、問題に対処するための効率的な方法があるのだろうかと思います。
私はアーカイブを解凍してからファイルを一緒にマージするのをやめようとしています。これは時間がかかるためです。
私は大きなファイルで同じ問題に直面していますが、解決策を見つけましたか(手動で解凍してからスパークするのを除く)か? :) – ixaxaar
@ixaxaar、私はすべてのtarアーカイブを、スパークがうまく動作するhadoopシーケンスファイルに変換してしまいました。 https://stuartsierra.com/2008/04/24/a-million-little-files – septra
瓶に感謝します!私は実際には50個のtarファイルを持っており、それぞれには100万の小さな(json)ファイルがあります。D – ixaxaar