[HADOOP] 필수 입력란 'client_protocol'이 설정되지 않았습니다.
HADOOP필수 입력란 'client_protocol'이 설정되지 않았습니다.
하이브 0.12 사용하고 아파치에서 JDBC를 노력하고있어. 코드를 실행하려고하면 apache.thrift.TApplicationException이 발생합니다.
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveJdbcClient {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
//replace "hive" here with the name of the user the queries should run as
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "");
Statement stmt = con.createStatement();
String tableName = "testHiveDriverTable";
stmt.execute("drop table if exists " + tableName);
stmt.execute("create table " + tableName + " (key int, value string)");
// show tables
String sql = "show tables '" + tableName + "'";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}
// describe table
sql = "describe " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
}
// load data into table
// NOTE: filepath has to be local to the hive server
// NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
String filepath = "/tmp/a.txt";
sql = "load data local inpath '" + filepath + "' into table " + tableName;
System.out.println("Running: " + sql);
stmt.execute(sql);
// select * query
sql = "select * from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
}
// regular hive query
sql = "select count(1) from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}
}
}
필요한 모든 항아리를 가져 왔고 코드를 실행하려고하면 다음 오류가 발생합니다.
org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null)
이 문제를 어떻게 해결할 수 있습니까?
해결법
-
==============================
1.이는 클라이언트와 서버 사이의 버전이 일치하지 않음을 나타냅니다. 즉, 클라이언트가 서버보다 최신 인 경우입니다.
이는 클라이언트와 서버 사이의 버전이 일치하지 않음을 나타냅니다. 즉, 클라이언트가 서버보다 최신 인 경우입니다.
-
==============================
2.같은 문제가 있습니다. 설정하면 작동합니다.
같은 문제가 있습니다. 설정하면 작동합니다.
JDBC Maven Repo 버전을 1.1.0으로 하이브하십시오.
이 jira를 확인하십시오. 최신 하이브 - jdbc 버전은 HIve 0.13에서 지원되지 않습니다. https://issues.apache.org/jira/browse/HIVE-6050
이걸 너의 감자에 넣어 라.
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.1.0</version> <classifier>standalone</classifier> </dependency>
-
==============================
3.나도 같은 문제에 직면했고 다음 단계를 수행하여 해결책을 찾아 간다.
나도 같은 문제에 직면했고 다음 단계를 수행하여 해결책을 찾아 간다.
01 단계 : - 아래 링크를 사용하여 Eclipse에 대한 하이브 라이브러리 (IDE가 될 수도 있음)를 포함시킵니다.
Http : //morris.supertex.net/appachihehbee/hibe-1.0.1/ (Apache-hiebe-1.0.1-bn.)
2 단계 : hadoop-core-1.1.0 병을 추가합니다.
이 오류는 hadoop 독립 실행 형 및 hadoop 코어와의 버전 불일치로 인해 모두가 언급했습니다.
from https://stackoverflow.com/questions/24694415/required-field-client-protocol-is-unset by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark : 클러스터 UI를 확인하여 근로자가 등록되었는지 확인하십시오. (0) | 2019.06.22 |
---|---|
[HADOOP] HTable (config, tablename) 유형은 더 이상 사용되지 않습니다. 대신 무엇을 사용합니까? (0) | 2019.06.22 |
[HADOOP] 돼지 튜플을 Python UDF에 전달할 수 없습니다. (0) | 2019.06.22 |
[HADOOP] Hadoop에서 pdf 파일의 데이터에 액세스하고 조작하는 방법은 무엇입니까? (0) | 2019.06.22 |
[HADOOP] 하이브의 시퀀스 파일 형식 및 마루판 파일 형식은 무엇입니까? (0) | 2019.06.22 |