(a) 쿼리를 실행하거나 (b) 결과를 페치하지 않고 HiveQL 쿼리의 대략적인 런타임을 어떻게 결정할 수 있습니까?실제 실행없이 HiveQL 쿼리의 런타임 특성을 분석하십시오.
0
A
답변
1
하이브 명령 EXPLAIN
은 쿼리 실행 계획을 제공합니다. 검색어 앞에 EXPLAIN
키워드를 추가하고 실행하십시오.
그렇지 않으면 결과를 반환하는 대신 쿼리에서 레코드 수를 반환 할 수 있습니다. 이는 실행 시간에 대한 통찰력을 제공 할 수 있습니다.
0
@visakh에서 언급했듯이 "설명"은 실행 계획을 제공합니다. 그러나 그것은 비밀스럽고 실행 시간을주지 않습니다. 당신은 찾고있는 정보를 얻기 위해 (아마도 풍부한) 설명을 산출하는 데 상당한 양의 분석을해야 할 것입니다.
하이브 테이블에서 "analyze"를 실행하면 은을 돕지 만 여전히 사용자에게 친숙하지 않습니다. "설명"은 이전 주요 고용주의 팀이 HortonWorks에 개선을 요청한 기능입니다.
그러나 "카운트"접근법에 대해서는 의견이 분분합니다 : "카운트"는 일반적으로 쿼리 자체를 실행하는 데 많은 시간이 걸립니다. 모든 데이터를 가져와야하고 다양한 필터링 및 집계 작업이 수행되어 카운트를 반환해야합니다. 불행히도 Hive는 계산을 수행 할 때 "정렬/순서 지정"단계를 무시할 정도로 지능적이지 않으므로 결과적으로 쿼리의 전체 "가격"을 지불하게됩니다.
@javadba ... 물론 count() 방식은 기본적으로 전체 쿼리를 그대로 실행합니다. 결과 세트가 화면에 쌓이는 것을 피하는 방법으로 남겨 뒀습니다. – visakh
글쎄 당신의 대답은 전혀 지적하지 않습니다. hiveql 배경이 아닌 사람 (특히 oracle)은 count()가 빠르다고 생각할 수도 있습니다. – javadba