2017-10-02 1 views
1

BigQuery 쿼리가 오래 걸리는 이유를 이해하려고합니다.__SHUFFLE1_REPARTITION0의 BigQuery 속도 -

Explanation의 출력을 해석하는 데 대한 몇 가지 게시물이 있지만이 경우 진행 상황을 이해하는 데 도움이되는 내용이 없습니다.

__PSRC___SHUFFLE2_0에서 읽는 것과 __SHUFFLE2_REPARTITION0에 쓰는 것이 왜 오래 걸릴지에 대한 의견이 있으십니까? 이 파티션을 새로운 키로 다시 파티션합니까? 이전 단계, (13), 또한 현재 70 %가이 단계에 소요되는 우리의 데이터의 샘플에 200S 정도 걸립니다이 HASH($290)

에 의해 작성되었습니다 있지만. (

(그럴 수 없어 도움이 경우 내가 편집 됨 버전을 게시 할 수 있지만, 여기에 전체 쿼리를 게시 할 수 있습니다.)

Query Timing

+0

2 단계와 5 단계는 흥미 롭습니다. 2 단계는 2M 행에서 7M으로 진행되며 5 단계는 140M 출력과 함께 10M 행을 얻습니다. 조인이 폭발적이라고 생각합니다. 쿼리되는 데이터의 크기는 얼마입니까? –

답변

2

않도록 폭발 조인.

을 훨씬 더 텍스없이 t, 나는 무슨 일이 일어나고 있는지 알 수는 없지만, 2 단계 및 5 흥미 :

  • 2 단계는 5 140M의 출력으로 10 개 M 행을 얻을 수 7M
  • 스테이지에 2M 행에서 이동합니다.

조인이 폭발적이라고 생각합니다. 쿼리되는 데이터의 크기는 얼마입니까?

더 이상의 데이터가 없으면 BigQuery가 이와 같은 분해 조인을 처리 할 수있게되어 행복하다고 말 하겠지만 분해 조인을 수행 할 때 매우 빠른 쿼리는 기대하지 않습니다.

조인 분해의 구체적인 예는 https://stackoverflow.com/a/46533335/132438을 참조하십시오.

+0

좋습니다, 감사합니다. 2 단계는 'UNNEST'이고 5 단계는 'JOIN'입니다. 조사하겠습니다. – Maximilian

+0

폭발하는 가입의 경우 Shuffle & Repartition에 모든 시간을 소비하는 이유를 알고 있습니까? 왜 비용은 조인 자체에서 오는 것이 아니겠습니까? – Maximilian

+0

BigQuery는 쿼리가 스캔 할 행 수를보고이 작업에 100 개의 슬롯을 제공하기로 결정합니다. 갑자기이 쿼리의 행 수가 10000 배 이상 늘어나고 더 많은 노드가 필요합니다 (조인 분해). 이러한 노드를 작동 시키려면 BigQuery가 모든 데이터를 다시 셔플하고 다시 파티션해야합니다. 그것이 이것이 느린 단계가되는 이유입니다. –