リピさんとオザさんのTezとSparkの会話
@oza_x86 さっきの例だと,全体が一つのステージ?それとも各GROUP BYみたいなのがステージになっていて,その部分が図には書かれていない?
2014-09-11 10:53:07Hiveの場合にはとりあえずTezによって生成された実行モデルのステージ毎に永続化,Spark SQLの場合はどうなんだろ?Sparkの場合って明示的にcacheを呼ばないと永続化しなかったはずだが…クエリ側から制御出来るのかな?
2014-09-11 10:54:22@repeatedly この粒度だと,基本的には edge のたびに書いてるイメージ.実際に書くか書かないかは Hive の Optimizer が決める.
2014-09-11 10:54:35@tagomoris それ,Spark SQLユーザからはどうやって指定するんでしょ…クエリ内に書く?それともなんか別でセットアップしてからクエリを投げる?
2014-09-11 10:58:22@oza_x86 @repeatedly 逆に永続化しない場合だと、中間結果はストリーミングで次のノードにmemory-to-memoryで順次渡されていく感じです?
2014-09-11 10:58:46@frsyuki @repeatedly これが意外なことに,今のとこ基本全部永続化するっぽい.In Memory での reduce 側の merge はあるけどね.なのでスケジューラも基本的にデッドロックとかはしないかな.
2014-09-11 12:12:12@repeatedly 今のとこ全部書くので explain では表示されないのを確認した.あと通信方法(broadcast, one-to-one, scatter-gather: これはshuffleのこと)は表示される.
2014-09-11 12:15:33@oza_x86 @frsyuki つまり,さっきのでいうと,Tez側の図のエッジ間はとりあえず今の所は全部永続化されている?けどDAGだしランレングスとかで中間データを効率よくもっているしで,高速化はされているという感じ?
2014-09-11 12:17:20@oza_x86 @oza_x86 その基本全部永続化するのは悪くないような。Faster MapReduce(※ただしオプティマイザのアーキテクチャが違うよ!)みたいな捉え方で問題ないということですよね。
2014-09-11 12:56:49