Spark VS MR 참고 링크 : https://destiny-enquiry-0a9.notion.site/14-MapReduce-e7df5748c70447d8b6c9be7bf8a60d6b
블로그 정리(링크)
DataFrame/DataSets의 등장으로
→ Spark SQL 인터페이스에 ‘데이터 셋’이라는 최적화 작업이 진행 중이고, 이를 통해 DAG 그 이상의 최적화를 만들어낸다. → 실행중인 쿼리에도 SQL 최적화를 할 수 있기 때문.
lazy evaluation을 스파크가 연산방식으로 도입을 한것. 실질적으로 함수형 프로그래밍의 특징이다. 어떻게 보면 spark 자체의 특징이라고 보긴 힘들다
sparkcontext뿐 아니라, hivecontext를 통해서도 RDD를 생성할 수 있다고 함. 이와 더불어 다양한 database와도 통신이 가능하다고 함
DataFrame에 대한 강의내용에서 DataFrame을 생성하는 방법으로 hivecontext가 나옴.
실질적으로 RDD, DataFrame은 크게 다르지 않다. 생성된 후 , RDD / DataFrame 방식으로 오감. 기본적으로 DataFrame이 전혀 새로운 것이 아니라 RDD위에 뭔가가 추가된것
DataFrame과 DataSet은 실질적으로 큰 속도차가 없다. JS/ TypeJS 의 차이 정도다. 정말 미리 타입을 지정해줬다의 차이이다.
UDF의 사용에 대해서는 사실 말이 많다. 왜냐면 이게 spark가 아니라 스크립트를 작성하는 프로그래밍 언어로 작성하고 이를 spark내부로 연결하여 통신해주는 것이므로 이 네트워크 비용이 어마어마하다. 그래서 사용하지 말라고 하느 ㄴ곳도 많다.
최적화에 대해서는 말이 많은데
DataFrame만으로는 사실 구현하고자 하는 코드에 한계가 있다. 반복문을 돌리드 ㄴ뭐든 근데 UDF는 말이 많으니까 RDD로 변환해서 map/ lambda로 반복문을 돌리고 사용하고 그렇게 해준다.