22.01.13 21:35 작성
·
597
0
안녕하세요 선생님. 수업 듣던 중 궁금한 것이 생겨 질문 드립니다. DataFrame과 SQL이 결국은 Wrapper역할이고 api를 호출하면 결국 RDD로 내려가서 연산이 이루어진다고 하셨는데, 그런데도 RDD보다 더 빠를 수 있는 이유가 뭔가요?
답변 2
0
2022. 01. 14. 15:26
감사합니다 선생님. 저희가 RDD에 대한 개념이 빠삭하고 구현력이 엄청 뛰어난게 아니라면 DataFrame이나 SQL이 더 나을 것 같다는 생각이 듭니다. 감사합니다
0
2022. 01. 14. 12:41
안녕하십니까,
제가 보여드린 DataFrame, SQL , RDD 비교 장표는 좀 논란(?)의 여지도 있을 것 같습니다. DataBricks에서 공식적으로 발표한 장표라 인용하였지만, 말씀하신대로 결국은 RDD로 연산이 되는데 더 빠를 이유가 없습니다.
제 생각엔 이건 DataFrame, SQL이 살짝 복잡한 업무를 처리했을 때 최적화를 보다 잘 해주기 때문인것 같습니다. 가령 TPC-D에 있는 주문 처리 로직 같은 경우에 SQL, DataFrame이 좀 더 최적화를 잘해서 더 빠른 결과를 내놓은것 같습니다.
단순하게 한 테이블을 group by하고 count하는 정도의 로직이라면 RDD가 더 빠르게 할 것입니다. 하지만 어느 정도 복잡한 로직이 수반되는 업무를 RDD로 구현할 때는 구현 복잡도가 SQL, DataFrame대비하여 상대적으로 높아져서 그런 결과가 나온걸로 추정합니다.
반면에 SQL과 DataFrame은 Catalyst라는 별도의 최적화 엔진이 있습니다. 이게 RDBMS의 SQL 실행계획을 최적화 하는 엔진과 비슷합니다(물론 RDBMS 수준은 아닙니다 ^^;;). 때문에 주어진 로직을 어떻게 연산을 수행해야 더 빨리 수행할 수 있는지를 판단해서 수행하게 됩니다. 이 차이가 가장 큰 것 같습니다.