3

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")
4

2 に答える 2

0

ありがとう!最初の方法を試しました。動作しますが、exec 呼び出しと RPC/auth のオーバーヘッドのため、あまりパフォーマンスが高くありません。32 ノードのクラスターで実行するには、約 10 時間かかります。Amazon s3 コネクタを備えた aws で databricks を使用して、4 ノード クラスターで 30 分で実行できました。オーバーヘッドがはるかに少ないようです。GCS から Spark にデータを取り込むためのより良い方法を Google が提供してくれることを願っています。

于 2016-04-02T07:58:47.553 に答える