left outer join보다는 inner join을 쓴다.
- 왜그런진 모르겠는데..;; outer join보다는 inner join이 성능이 더 좋단다.
- 물론, left 테이블에 없어도될 것들이 join 되는 케이스를 고려한다면 inner가 당연히 효율이 좋은건데, 이 상황은 어차피 left 테이블 전체를 무조건 남겨야 하는 경우였음. 다만, 그 모든 값들이 right 테이블에도 들어있기 때문에 이론적으로 차이 없을듯한데..;;.. MR 특징이려나..;;
count(distinct ..)는 inner view의 group by로 푼다!
- http://stackoverflow.com/questions/19311193/why-is-countdistinct-slower-than-group-by-in-hive
- count(distinct ..)가 있는 쿼리는 하나의 reducer에서 distinct 처리까지 수행한다!!
- 즉, distinct를 맡은 reducer가 끝없이 수행될 리스크도 있다..;;
- group by로 풀어줘야 명시적으로 여러 reducer에 흩어서 처리한다.
불필요한 null, '' 등을 미리 제거한다!
- group by용 키의 값이 null, '' 등인 경우는 대부분쓸데없다.
- 그런데 ''인 값이 매핑되는 경우가 무수히 많을 경우...
- reducer 한놈이 이 값을 처리해야 해서 매우 힘들어할 수 있다.
- 꼭 필요한 경우가 아니면 group by 속성의 null, '' 등은 미리 where 조건에서 filter out 시키자.
'SW-PRODUCT > 개발-데이터분석' 카테고리의 다른 글
Java에서의 NumPy : ND4J (0) | 2016.04.09 |
---|---|
[링크] Tutorial: Using Amazon ML to Predict Responses to a Marketing Offer (0) | 2016.04.07 |
[링크] 머신러닝 한글 교제 (0) | 2016.03.29 |
[링크] 데이터 사이언스 벤다이어그램 (0) | 2016.03.29 |
[링크] 구글 챠트, Google Chart (0) | 2016.03.03 |