まず、スタンドアロンの Spark クラスターは 20 個のノードで構成され、各ノードには 40 個のコアと 128G のメモリ (2 つのマスターを含む) があります。
1. Spark-Context を再利用するために Spark-Job-Server を使用します (コアでは、キャッシュされた RDD をクエリに再利用したい)、Spark executor メモリを各ノードに 33G に設定し、" select * from tablename limit 10" の場合、結果は不正な形式の UTF-8 スタイルになり、アプリでは解決できません。
しかし、executor-memory を 32G 未満に設定すると、結果は適切に形成されます。メモリを変更している間、残りの設定はそのままにしました。
Spark と Spark-Job-Server が混乱したコードの原因を教えてくれることを知っている人はいますか? 結果が混乱してコード化される理由は、メモリが多すぎるためですか?
2. 2 つ目は、ユーザー ケースにおけるより具体的なものです。60G のデータをメモリにロードし、メモリのみのストレージ レベルを使用して永続化します。データは実際には、クエリを実行する構造化されたテーブルです。次に、キャッシュされた 60G RDD (DataFrame として登録) で Spark SQL を試しました。具体的には、"select column from tableName where condition clause" などの複数のクエリを並行して実行すると、OOM 例外が発生しました。
現在の cluster でクエリの並列処理を増やしたいと考えています。並列処理の要件を解決するのに役立つヒントや情報を教えてください。