1TBのデータベーステーブルに基づいてSpark DataFrameをロードするために1TBのメモリが必要かどうかを知るのは苦労しています。これは本当ですか?Spark:DataFrameを作成するために必要なメモリは、入力データのサイズと多少同じですか?
私はanother questionのSparkの方法ではやっていないと言われました。データフレームを繰り返し作成し、そのサブセットを処理することからデータをチャンクすることから始めました。問題は、並列処理が十分に行われていないため、これが遅すぎるということでした。そのフィードバックに基づいて、テーブル全体をロードしてSparkのパーティショニング/グループ化/並べ替えを使用して、必要な順序で必要なものを取得しようとしましたが、 30GBの小さなデータベーステーブル(私の場合)のために何千ものパーティションを持っているにもかかわらず、(私のローカルテストマシン上で)割り当てます。
私は過去数週間にわたって記事やドキュメントを検索して読んできたので、私は夢中になりました。実際にスパークの使用例を見つけるのは本当に苦労しています。ぼんやりと「大きな」データセットと呼ぶものにアクセスしてください。特に、DataFramesについて、実際のデータベースを入力として扱う場合にはそうです。さらに、データを手動でチャンクするべきではないというフィードバックを得ることで、すべてのデータが実際に一度に選択されるわけではないので、ある程度の魔法が必要になると思います。この点に関する有用な情報は、非常に高く評価されます。
次の場合にあなたがすべき間違いcache()
RDDのとデータフレーム
どのようにしているかサンプルコードをお願いしますか?それがアイデアを与えるように。 –
@IndrajitSwain私は元のコードをさらに並列化するために何をしたいのかを見たい場合は、私がリンクしている他の質問にいくつかのコードがあります。そうでなければ、この最近のテストでテーブル全体をどのようにロードしようとしているのか疑問があるなら、 'spark.read'と' .option( "dbtable"、 " (select ... 'from(JDBC、Postgres)。 – Project707
sparkのストレージタブを見てください。データフレームをキャッシュすると、どれくらいのスペースが消費されているか、現在どれくらいの量がメモリに残っているのか、 – jonathanChap