2017-03-09 19 views
0

ファイルの圧縮形式を変更して、同じサブディレクトリ名とファイル名で出力する必要があります。sparkを使用してファイル圧縮形式を変換する

/user/me/project/2017-3-06/ {part-r-00001.lzo, part-r-00002.lzo, ...} 
/user/me/project/2017-3-07/ {part-r-00001.lzo, part-r-00002.lzo, ...} 
/user/me/project/2017-3-08/ {part-r-00001.lzo, part-r-00002.lzo, ...} 

予想される出力は次のようになります。たとえば、入力が似ている場合

/user/me/project_v2/2017-3-06/ {part-r-00001.lz4, part-r-00002.lz4, ...} 
/user/me/project_v2/2017-3-07/ {part-r-00001.lz4, part-r-00002.lz4, ...} 
/user/me/project_v2/2017-3-08/ {part-r-00001.lz4, part-r-00002.lz4, ...} 

は、私もそれを達成するためにスパークを使用する必要がありますか?

+0

Can?確かに...少しの創造性で、あなたはたくさんのことをすることができます。それは理にかなっていますか?どういたしまして。 Sparkに対して多くのハッキングを行う必要があります。 – zero323

+0

代わりに "できますか"と尋ねることを考えてください。私は思ったように、おそらくスパークはこの特定の仕事にとって最良の選択ではないでしょう。ところで、それを達成するための提案されたツールはどれですか? – SexyNerd

+0

:)個人的には、[Luigi](https://luigi.readthedocs.io/en/stable/)または同様のバッチ処理/ワークフロー管理システムを見ていきます。 – zero323

答えて

0

あなたのファイルがhdfs上にあると仮定します: ファイルが分割可能な場合、Sparkはファイルの復号化に適しています。

しかし、ファイルを同じ場所に直接(gunzipのように)更新することはできませんので、出力を新しい場所に書き込んでから元のファイルを削除した後、新しいファイルを元の場所に移動してください。

時間効率を上げるためにファイルを削除するときに、必ず - スキップ・トラッシュを使用してください。

+0

そうです、それは私たちがしたいことです。ただし、同じファイル名と同様のファイルパスを保持する方法が課題です。 – SexyNerd

+0

sc.wholeTextFilesを試してみてください - ファイル絶対パスをキーとして、値をファイルの内容として与えます。これに対する制限はファイルが小さくなければなりません。 –

+0

'wholeTextFiles'は私が必要とするものに非常に近いです。しかし、私たちのファイルは1.2 GBごとにロールオーバーします。これは 'wholeTextFiles'の目的に合うほど大きすぎる可能性があります。 – SexyNerd

関連する問題