[HADOOP] Hive ParseException- 'end' 'string'근처의 입력을 인식 할 수 없습니다
HADOOPHive ParseException- 'end' 'string'근처의 입력을 인식 할 수 없습니다
기존 DynamoDB 테이블에서 Hive 테이블을 생성하려고 할 때 다음 오류가 발생합니다.
NoViableAltException(88@[])
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:9123)
at org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:30750)
...more stack trace...
FAILED: ParseException line 1:77 cannot recognize input near 'end' 'string' ',' in column specification
쿼리는 다음과 같습니다 (무죄를 보호하기 위해 단순화 됨).
CREATE EXTERNAL TABLE moveProjects (cid string, end string, category string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "Projects",
"dynamodb.column.mapping" = "cid:cid,end:end,category:category");
기본적으로 Projects DynamoDB 테이블의 내용을 포함하는 Hive 테이블을 만들려고하는데 create 문이 Hive / Hadoop에서 구문 분석 오류를 발생시킵니다.
해결법
-
==============================
1.문제는 실제로 구문 오류가 아니며 Hive ParseException은 Hive의 예약 키워드 (이 경우 end)에 의해서만 발생합니다.
문제는 실제로 구문 오류가 아니며 Hive ParseException은 Hive의 예약 키워드 (이 경우 end)에 의해서만 발생합니다.
해결책 : 문제가되는 열 이름 주위에 백틱을 사용하십시오.
CREATE EXTERNAL TABLE moveProjects (cid string, `end` string, category string) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "Projects", "dynamodb.column.mapping" = "cid:cid,end:end,category:category");
끝 부분에 추가 백틱이 있으면 쿼리가 예상대로 작동합니다.
출처 : Facebook Phabricator 추적기의 Hive 티켓
-
==============================
2.삽입 덮어 쓰기를 수행하는 동안 폴더 경로에서 / Date = 20161003을 사용하고 있는데 실패했습니다. 나는 / Dt = 20161003으로 바꿨고 효과가 있었다.
삽입 덮어 쓰기를 수행하는 동안 폴더 경로에서 / Date = 20161003을 사용하고 있는데 실패했습니다. 나는 / Dt = 20161003으로 바꿨고 효과가 있었다.
-
==============================
3.여전히 쿼리 작업을 원한다면 예약 된 키워드를 벗어날 수 있습니다 !!
여전히 쿼리 작업을 원한다면 예약 된 키워드를 벗어날 수 있습니다 !!
끝을`end`로 바꿉니다.
예약 키워드 목록은 다음과 같습니다. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
CREATE EXTERNAL TABLE moveProjects (cid string, `end` string, category string) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "Projects", "dynamodb.column.mapping" = "cid:cid,end:end,category:category");
from https://stackoverflow.com/questions/18640760/hive-parseexception-cannot-recognize-input-near-end-string by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] textinputformat.record.delimiter를 하이브 cli / beeline 내에서 기본값으로 재설정하는 방법은 무엇입니까? (0) | 2019.08.06 |
---|---|
[HADOOP] hadoop을 사용하는 동안 로거 API를 사용하여 자바 로그 파일을 작성하는 방법 (0) | 2019.08.06 |
[HADOOP] Hadoop Nodemanager 및 Resourcemanager가 시작되지 않음 (0) | 2019.08.06 |
[HADOOP] 코끼리 - 조류 mvn 패키지 오류 (0) | 2019.08.06 |
[HADOOP] 2n + 1 쿼럼은 무엇을 의미합니까? (0) | 2019.08.06 |