[HADOOP] ClassNotFoundException : org.apache.hive.jdbc.HiveDriver
HADOOPClassNotFoundException : org.apache.hive.jdbc.HiveDriver
나는 Java를 처음 접했습니다. java를 통해 하이브 서버에 연결하려고하고 https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC에서 샘플 코드를 사용하려고합니다.
import java.sql.SQLException;
public class HiveJdbcClient {
//private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
}
}
필요한 위치에 모든 병을 놓고 pom 파일을 업데이트했지만 점점
java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at HiveJdbcClient.main(HiveJdbcClient.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
나는 꽤 오랫동안 해결책을 찾았지만 그것을 해결할 수 없었다. 이 문제를 해결하는 방법을 알려주십시오.
해결법
-
==============================
1.이것은 hivesever2 버전의 불일치 때문입니다. Hive 버전이 0.13 이상인 경우이 값을 사용해야 할 수 있습니다.
이것은 hivesever2 버전의 불일치 때문입니다. Hive 버전이 0.13 이상인 경우이 값을 사용해야 할 수 있습니다.
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.1.0</version> </dependency>
또한이 항아리를 클래스 경로에 추가해야합니다.
-
==============================
2.누락 된 클래스 org.apache.hive.jdbc.HiveDriver를 포함하는 라이브러리 (JAR 파일)를 프로젝트에 포함해야합니다. 여기에서는 버전 0.8.0에 대한 링크입니다.
누락 된 클래스 org.apache.hive.jdbc.HiveDriver를 포함하는 라이브러리 (JAR 파일)를 프로젝트에 포함해야합니다. 여기에서는 버전 0.8.0에 대한 링크입니다.
-
==============================
3.게시 한 스택 추적에서 IntelliJ를 통해이 오류를 실행한다고 가정합니다.
게시 한 스택 추적에서 IntelliJ를 통해이 오류를 실행한다고 가정합니다.
POM은 컴파일 된 프로젝트를 실행하는 방법이 아닌 프로젝트를 빌드하는 방법을 설명합니다. 클래스에서 org.apache.hive.jdbc.HiveDriver를 가져 오지 않으므로 IntelliJ가 포함 JAR이 클래스 경로의 JVM으로 전달되는지 확인할 수 없다고 상상해보십시오.
이 경우에해야 할 일은 클래스 패스에있는 하이브 항아리의 위치를 수동으로 전달하는 것입니다. 런타임 설정이 될 IDE의 프로젝트 설정 (POM이 아님)의 어디에서 하이브 JAR을 가리키는 cp 또는 -classpath 명령 줄 스위치를 포함시켜야합니다. 또는 David Fernadez가 IntelliJ가 클래스 패스에서 JAR을 전달하도록 강제하는 클래스를 가져 와서 가져올 수 있습니다.
-
==============================
4.이유는 Java 컴파일러 또는 JVM이 클래스 패스를 읽지 않는다는 것입니다.
이유는 Java 컴파일러 또는 JVM이 클래스 패스를 읽지 않는다는 것입니다.
환경 설정은 초보자에게는 정말 어렵습니다. 고통을 덜어주기 위해 Cloudera quickstart VM 및 Java IDE를 사용하는 것이 좋습니다.
나는이 기사에서 많은 시간을 겪고 그것을 구성했다 : http://www.yuchao.us/2017/05/hive-jdbc-in-cloudera-hadoop.html
from https://stackoverflow.com/questions/36212092/classnotfoundexception-org-apache-hive-jdbc-hivedriver by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 스파크 SQL은 다수의 파편이있는 쪽매 데이터 작성을 완료 할 수 없습니다. (0) | 2019.06.27 |
---|---|
[HADOOP] 클러스터를 초기화 할 수 없습니다. mapreduce.framework.name 및 해당 서버 주소 - job2remoteClustr 제출을위한 구성을 확인하십시오. (0) | 2019.06.27 |
[HADOOP] HDFS namenood 형식 오류 "주 클래스를 찾을 수 없습니다 : namenood"코드 첨부 (0) | 2019.06.27 |
[HADOOP] Hadoop 2.2.0 jobtracker가 시작되지 않습니다. (0) | 2019.06.27 |
[HADOOP] 슬레이브 머신의 DiskErrorException - Hadoop multinode (0) | 2019.06.27 |