Hive 작성 표보 [Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException]에서 발생한 혈액 사건
5674 단어 Hadoop
첫 번째 단계: 오류가 없는지 프로필 보기
두 번째 단계: 인터넷에서 같은 하늘 끝에 있는 사람을 찾아봐. 어떤 형들도 나처럼 이 문제가 생겼는지 찾아봐. 찾아봐. mysql-connector-javajar 가방을 바꾸는 해결 방안을 찾아봐. 아무리 봐도 문제를 해결할 수 없을 것 같아. 죽은 말을 산 말로 삼는 마음으로 해봤어. 역시 예상치 못했어. 문제를 해결하지 못했어, PASS!
3단계:hive-hiveconfhive를 실행합니다.root.logger=DEBUG, console에서 hive 시작 프로세스의 log를 인쇄합니다.안 때리면 몰라, 깜짝 놀라면 밑에 피투성이가 된 잘못된 정보를 보고 가슴이 반쯤 차가워져, 피투성이야!!!너무 길어서 제가 살짝 잘라서 나왔어요.
[main]: ERROR DataNucleus.Datastore: Error thrown executing CREATE TABLE `SERDE_PARAMS`
(
`SERDE_ID` BIGINT NOT NULL,
`PARAM_KEY` VARCHAR(256) BINARY NOT NULL,
`PARAM_VALUE` VARCHAR(4000) BINARY NULL,
CONSTRAINT `SERDE_PARAMS_PK` PRIMARY KEY (`SERDE_ID`,`PARAM_KEY`)
) ENGINE=INNODB : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
...
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
main]: ERROR Datastore.Schema: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
...
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
[main]: DEBUG metastore.HiveMetaStore: admin role already exists
InvalidObjectException(message:Role admin already exists.)
at org.apache.hadoop.hive.metastore.ObjectStore.addRole(ObjectStore.java:3187)
...
at java.lang.reflect.Method.invoke(Method.java:606)
[main]: DEBUG metastore.HiveMetaStore: Failed while granting global privs to admin
InvalidObjectException(message:All is already granted by admin)
at org.apache.hadoop.hive.metastore.ObjectStore.grantPrivileges(ObjectStore.java:3912)
...
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
네 번째 단계: 해결 방법을 계속 검색한 후에 문자 집합의 원인을 찾았습니다. mysql에서 데이터베이스의 문자 집합을latin1로 바꾸고 다음 명령을 실행할 수 있습니다:alterdatabasehivecharactersetlatin1;
다섯 번째 단계: 하이브를 다시 시작하고 로그를 계속 본다. 첫 번째 exception이 사라진 것을 제외하고 다른 것은 여전히 존재한다. 의문이 있다. 진지하게 보면 metastore를 발견할 수 있다.HiveMetaStore: admin role already exists, 이전hive 시작 오류가 발생했을 때 남긴 문제가 아닐까요? mysql에 있는hive 데이터를 삭제하고 다시 만듭니다.
6단계: mysql에서 다음 명령을 실행합니다:drop databasehive;create database hive; alter database hive character set latin1;
7단계:hive를 다시 켜고log를 보십시오. 문제가 해결되었습니다!!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 액세스 Hadoop 분산 파일 시스템 HDFS 구성 설명프로파일 m103은hdfs 서비스 주소로 바꿉니다. Java 클라이언트를 이용하여 HDFS의 파일을 액세스하려면 프로필hadoop-0.20.2/conf/core-site를 사용해야 합니다.xml입니다. 처음에 저는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.