PySpark (Google Dataproc) を使用して約 100 万の HTML ファイルを解析し、関連するフィールドを圧縮ファイルに書き込もうとしています。各 HTML ファイルは約 200KB です。したがって、すべてのデータは約200GBです。
以下のコードは、データのサブセットを使用する場合は問題なく動作しますが、データセット全体で実行すると数時間実行されてからクラッシュします。さらに、ワーカー ノードが使用されていない (CPU の 5% 未満) ため、何らかの問題があることがわかります。
システムが GCS からのデータの取り込みで窒息していると思います。これを行うより良い方法はありますか?また、この方法で wholeTextFiles を使用すると、マスターはすべてのファイルをダウンロードしてエグゼキュータに送信しようとしますか、それともエグゼキュータにダウンロードさせますか?
def my_func(keyval):
keyval = (file_name, file_str)
return parser(file_str).__dict__
data = sc.wholeTextFiles("gs://data/*")
output = data.map(my_func)
output.saveAsTextFile("gs://results/a")