Народ, а кто в кишки лазил, вот помогите понять - происходит вот у нас шаффл. По идее, есть у нас буфер в execution memory, там происходит некий сортинг входной партиции. Далее, по достижении определенного лимита, данные спилятся на диск spill writer-ом в отдельный файл. Допустим, это произошло ещё несколько раз, после чего все прокрутилось, и файлы опять поднимаются в буфер, окончательно сортируются и мерджатся в один файл. Дальше эта шаффлд партиция отправляется на читку spill reader-у, который опять тащит блоки из нее в буфер и проводит похожую с spill writer-ом манипуляцию. Эта каша у меня в голове образовалась после прочтения нескольких разных источников и попытки немного полазить по сырцам. Помогите, пожалуйста, устранить кашу в голове:
1. Если говорить просто про шаффл - он вообще в состоянии произойти только в оперативной памяти, даже если данные входящей партиции помещаются в буфер, или же в любом случае будет промежуточные результаты скидывать на диск?
2. Если будет скидывать на диск все равно - то в чем вообще отличие шаффла со спиллом и без него?
3. Зачем spill reader ещё раз колбасит данные после spill wtiter-а?
4. Куда вообще сохраняет свои промежуточные результаты spill writer и spill reader (и shuffle writer ещё)? На датаноду локально, или в распределенное хранилище?