2017-09-25 1 views
0

그냥 다음과 같은 간단한 쿼리HIVE : 'SELECT * from'의 'LIMIT'는 어떻게 작동합니까?

select * from T limit 100 

상상에 대한 제한 작업을 수행하는 방법을 궁금해 테이블 ​​T가 1300 만 개 기록

윌 위의 질의 :
1. 첫 번째로드 모든 메모리 &에 1300 만 결과 집합에 100 개의 레코드 만 표시합니까?
2 만로드 (100) & 100 개 기록

의 결과 집합을 제공

는, 대부분의 페이지 만 "LIMIT"를 사용하는 방법에 대한 이야기가 아니라 어떻게 하이브 거래를 그걸로에서 꽤 오랫동안 지금이 검색되었습니다 후드.

유용한 답변 감사합니다.

+0

** (1) ** 생각 실험을 실행하고 우리가 기억 (당신의 제안을 확인 분산 시스템 다루기) ** (2) ** 실제 알고리즘을 나타내는 기술적 테스트를 제안하십시오. –

+0

무엇이 중요합니까? order by 절을 포함시키지 않는 한 최선을 다해 의사 결정을합니다. 그 시점에서 답을 알고 있습니다. – Andrew

+1

"2.로드 만 100"... 어떻게로드합니까? 어디에서? 각 머신에 1 개의 레코드 만있는 1000 개의 머신이 있다면 어떻게 될까요? 모든 기계는 동일한'SELECT * LIMIT 100' 쿼리 –

답변

1

더 최적화를 적용하지 않는 경우, 하이브 말까지 스캔 전체 테이블. 하지만 하이브는 hive.fetch.task.conversion의 일부로 으로 풀어 놓습니다. 간단한 조건으로 간단한 쿼리를 실행하고 에 MR/Tez을 실행하지 마십시오.

지원되는 값은 none, minimal 및 more입니다.

없음 : 안 hive.fetch.task.conversion (하이브 0.14.0과 부가가치가 하이브 8389)

최소 : * 파티션 열에 FILTER (갖는 절)을 선택 , 제한은

는 : SELECT는, 필터,

당신의 질문은 더 리입니다 (가상 열, TABLESAMPLE 포함) 만 LIMIT 최소한 또는 그 이상이 설정되면 어떻게 될까요? 더 참조 용) 그것은 단지 추가 된 파일을 검사하고 leastRows에 도달 할 때까지 (행을 읽어 gitCode, Confighere

+0

을 실행할 것이므로 메모리에 100을로드한다고 말할 수 있습니까? –

+0

예, 여기에서 확인하십시오. https://github.com/apache/hive/blob/release-1.2.1/ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java#L146 – rbyndoor

관련 문제