2017-12-16 21 views
1

내가 특정 레코드를 제외하려고 하이브 오프셋 쿼리를 실행하려고 노력하지만, 항상 아래의 오류를 얻고있다 :하이브, TEZ에 쿼리를 실행하고 오프셋

검색어 :

select * from sample order by id limit 1 OFFSET 1; 

오류 :

FAILED: ParseException line 1:41 missing EOF at 'OFFSET' near '1' 

나는 테이블을 삭제하고 SO 게시물에 제안 된대로 다시 작성했지만 여전히 동일한 오류가 발생했습니다. 또한 빠른 데이터 처리를 위해 이미 하이브에 TEZ engine을 설정했지만 위의 쿼리는 맵 축소 작업을 시작합니다.
왜 그렇게됩니까? 다른 쿼리를 실행하면 직접 결과가 via TEZ engine이됩니다.
아무도 내 이상한 행동을 설명하고 내 문제를 해결할 수 있습니까?

환경 :

1) Cloudera 5.12 
2) Hive 1.1.0-cdh5.12.0 
+0

클로우 데라에는 테즈가 없습니다. –

+1

이전 cloudera 버전에 대해 잘 모릅니다. 그러나 언급 한 버전에서 작동합니다. 이것을보십시오 : hive.exec.engine = tez;을 설정하십시오. 작동하지 않습니다 –

+0

여전히 MR 모드에서 실행됩니다. Tez가 설치되거나 설정되지 않았다는 것을 알고 있습니다. 심지어 최신 CDH에서도 –

답변

0

명확하지 당신은 MySQL의 태그 만 HiveQL SELECT 구문의 일부로서 OFFSET 존재하지 않는 이유.

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select

+0

그래서 어떻게 하이브에서이 기능을 얻을 수 있습니까 ?? 내가 한계 (1,2)를 사용했지만 여전히 동일한 오류가 발생했습니다. –

+0

귀하가 언급 한 링크는 지원 기능과 관련된 정보를 제공하지 않습니다. 대신 그들은 이미 실행 한 제한이 있지만 동일한 오류가 발생하는 쿼리 하나를 실행했습니다. 이 점에 대해 더 명확하게 설명해 주시겠습니까? 감사합니다 –

+0

그것은 내가 연결 구문입니다. 귀하의 질문에 오류가'OFFSET'에서 EOF가 누락되었습니다. 왜냐하면'OFFSET'은 HiveQL이 아닌 Mysql과 Postgres에 존재하기 때문입니다. 두 번째 행 'LIMIT 1,1'만 원하는 경우 올바른 것이지만 사용하지 않는 하이브 2.0에 ** 추가되었습니다. 다른 옵션은 'ROW_NUMBER' 함수를 사용하여 행 ID를 생성 한 다음'ID> 1'을 필터링하십시오. –

0

당신은 11-20처럼, 페이지 된 결과 집합을 생성하는 LIMIT 절과 OFFSET 절을 포함 할 수 있습니다. 항상이 절을 ORDER BY와 조합하여 사용하십시오 (따라서 첫 번째, 두 번째 등의 항목이 명확하도록). LIMIT (결과 집합이 항목 0-9, 100- 199, 등).

+0

쿼리에 대해 많은 쿼리를 시도했지만 하이브에서 작동하지 않기 때문에 쿼리 pls –