私はSpark SQLのコスト関数に取り組んでいます。 TABLE SCANの振る舞いをモデル化しているうちに、READとWRITEがパイプラインで実行されるか順番に実行されるかはわかりません。Spark SQL - シーケンスまたはパイプラインでREADとWRITEを実行しますか?
私たちは、次のSQLクエリについて考えてみましょう:WHERE columnA =「xyzの」TABLE1 FROM
SELECT *を;
各タスク:
- は、データブロック(ローカルまたはリモート・ノードからの)
- ディスクに残りのタプルを述語
- 書き込みを満たさないタプルフィルタリングを読み込み
(1)、(2)及び(3)の順序でまたはパイプラインで行われていますか?言い換えれば、データブロックは最初に完全に読み込まれ(それを構成するすべてのディスクページ)、次にフィルタ処理され、ディスクに書き直されるか、またはこれらのアクティビティがパイプラインで実行されますか? (すなわち、(n + 1)タプルを読み取っている間に、nタプルを処理して書き込むことができる)。
ありがとうございます。
あなたの答えによれば、1つのタスクを考えると、その計算時間はTimeRead + TimeProcessing + TimeWrite(パイプラインなし)で推定できます。 TimeReadは、パーティションの読み取りに費やされた時間、それをフィルタリングするためのTimeProcessing、および結果をローカルディスクに書き込むためのTimeWriteです。私は正しいですか? – loba76