Random + Broadcast Join 전략
Random + Broadcast Join 전략
출처: 문서
조인을 실행하기 위해 Pinot는 쿼리 시점에 가상 파티션을 만들어요. 그렇게 하는 가장 일반적인 방법은 테이블의 각 행에 무작위 파티션을 할당하는 것이에요. 그런 다음 각 파티션을 서버에 할당하고 조인을 분산 방식으로 실행해요.
이 파티션 기법은 조인의 테이블 중 하나에는 적용할 수 있지만 양쪽 모두에는 적용할 수 없어요. 그렇지 않으면 일부 행 쌍이 손실되어 결코 조인되지 않기 때문에 결과가 올바르지 않게 돼요. 그래서 Pinot가 하는 것은 한 테이블을 파티셔닝하고 다른 테이블을 브로드캐스트하는 것이에요.

점선 화살표는 셔플을, 실선 화살표는 서버 내 전송을 의미해요.
이 기법은 다른 기법(의미론적 가상 파티션 또는 colocated 조인 같은)을 사용할 수 없을 때 Pinot가 사용해요. 예를 들어 다음과 같은 쿼리에서요:
SELECT A.col1, B.col2
FROM A
JOIN B
ON A.col2 > B.col3 or A.col4 < B.col4
항상 그렇듯 Pinot는 오른쪽 테이블이 가장 작다고 가정하므로 그것이 브로드캐스트돼요. 이 기법을 사용하면 셔플되는 행 수는 count(A) + count(B) * number of servers로 상한이 정해질 수 있어요.