PySparkを使ってテキストファイルとして〜5,000,000行のRDDを出力しようとしています。長い時間がかかりますから、.saveAsTextFile()
をより速くする方法のヒントは何ですか?Sparkから何十億もの行を出力する
行はそれぞれ3列で、HDFSに保存します。
PySparkを使ってテキストファイルとして〜5,000,000行のRDDを出力しようとしています。長い時間がかかりますから、.saveAsTextFile()
をより速くする方法のヒントは何ですか?Sparkから何十億もの行を出力する
行はそれぞれ3列で、HDFSに保存します。
個々の行のサイズやクラスタのサイズがどれくらいの長さであるかを知ることなく、私はいくつかの推測しかできません。
まず、一般に、Sparkはパーティションごとに1つのファイルを出力します。あなたのRDDが単一の(あるいは少数の)パーティションである場合、HDFSまたはGCSへの出力は遅いようです。出力前に再パーティション化することを検討してください(再パーティション化はパイプラインに再分割して作業しても効果的です)。 RDD#getNumPartitionsを呼び出すと、必要な場合に、RDDと再構築に何パーティションがあるかを知ることができます。
私が考えることのできるもう1つの可能性は、HDFSがプロビジョニングされていないか(スペース不足など)、エラーが発生していて問題が非常にうまくいかないことが考えられます。 HDFS書き込みエラーがドライバには見えるが、コンテナログにはエラーがあると思う。
どのくらいの時間を要しているのか、どのような種類のクラスタとジョブの構成になっているのかを教えてください。どのくらいの行がありますか? – DNA
あなたは 'HDFS'に保存していますか? –