[HADOOP] 하이브에서 UDF 결과를 검색
HADOOP하이브에서 UDF 결과를 검색
다음 HiveQL 코드에서, 나는 기존 테이블에 파티션을 추가 할 :
-- my_table was defined and partitioned by `dt string`, which is date
-- now I want to add partition
alter table my_table add if not exists
partition (dt=current_date()); #FAILED: ParseException line 1:72 extraneous input '(' expecting ) near '<EOF>'
alter table my_table add if not exists
partition (dt=${current_date()}); # FAILED: ParseException line 1:60 cannot recognize input near '$' '{' 'current_date' in constant
그러나, 위의 코드가 작동하지 않습니다, 왜? 다른 방법은 그것을 할까?
해결법
-
==============================
1.하이브는 ALTER 파티션에 리터럴을 기대
하이브는 ALTER 파티션에 리터럴을 기대
NoViableAltException(26@[215:1: constant : ( Number | dateLiteral | timestampLiteral | StringLiteral | stringLiteralSequence | BigintLiteral | SmallintLiteral | TinyintLiteral | DecimalLiteral | charSetStringLiteral | booleanValue );])
또한, CURRENT_DATE 아마 더 낮은 버전으로 작업하는, 그래서 당신의 오류에 기반을 둔 하이브 2.0에서만 사용할 수 있습니다.
해결 방법.
다음 문을 사용하여 파일을 쓰기
ALTER TABLE my_table add if not exists partition(dt= '${hiveconf:mytime}')
및 (리눅스에서) 같은 하이브를 호출
mydate=$(date +"%m-%d-%y") hive -S -hiveconf mytime=$mydate-f test.hql
나는 도움을 바랍니다.
PS : 나는 어쨌든 당신이 (대신 CURRENT_DATE의 CURRENT_DATE처럼 사용한다, 하이브 2.0 CURRENT_DATE로 바꾼다 명령을 시도하고 싶습니다)
from https://stackoverflow.com/questions/41825726/retrieve-udf-results-in-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지 - 최대 개수를 가져옵니다 (0) | 2019.10.19 |
---|---|
[HADOOP] 하이브 외부 테이블은 HDFS의 새로운 마루 파일을 검색 할 수 있습니다 (0) | 2019.10.19 |
[HADOOP] 어떻게 스트림으로 STDOUT 인쇄 paramiko와 맵리 듀스 (0) | 2019.10.19 |
[HADOOP] 색조 --workflow에서 Oozie 워크 플로우 종속성을 만드는 방법 - 편집기 (0) | 2019.10.19 |
[HADOOP] HDFS 쓰는 동안 소켓 시간 초과 문제를 스파크 (0) | 2019.10.19 |