Hive客户端JDBC连接操作

创建maven工程

pom.xml

------------------------------

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.0.0
  com.jhy.hive
  hive2
  0.0.1-SNAPSHOT
  jar
  hive2
  http://maven.apache.org
 
    UTF-8
  2.7.3
 2.1.1
 

 
   
      junit
      junit
      3.8.1
      test
   
  
   
    org.apache.hive
    hive-jdbc
    2.1.1
  
   
    org.apache.hive
    hive-exec
    2.1.1


        org.apache.hadoop
        hadoop-client
        2.7.3
   
  
 

--------------------------------------------------------------------


启动hiveserver2服务。接受多个客户端连接请求

使得client通过JDBC连接操纵hive数据仓库 
-------------------------------------------
[hadoop@master data]$ hive --service hiveserver2 &

图示:

Hive客户端JDBC连接操作_第1张图片

java ---API

TestCRUD.java

-----------------------------------

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Before;

import org.junit.Test;


public class TestCRUD {
private Connection coon;
@Before
public void iniCoon() throws Exception{
coon = DriverManager.getConnection(//
"jdbc:hive2://192.168.178.100:10000/myhive",//
"hadoop",
"123456"//
);
}
/*
* create table users
*/


@Test
public  void insert() throws Exception{
PreparedStatement ppst = coon.prepareStatement("create table myhive.users(id int,name string,age int)");
ppst.execute();
ppst.close();
coon.close();
}

Hive客户端JDBC连接操作_第2张图片

Hive客户端JDBC连接操作_第3张图片

/*
* 插入多个
*/

@Test
public  void batchInsert() throws Exception{
PreparedStatement ppst = coon.prepareStatement("insert into table myhive.users(id,name,age) values(?,?,?)");
ppst.setInt(1, 1);
ppst.setString(2, "tom");
ppst.setInt(3, 12);
ppst.executeUpdate();

ppst.setInt(1, 1);
ppst.setString(2, "tom2");
ppst.setInt(3, 13);
ppst.executeUpdate();

ppst.setInt(1, 1);
ppst.setString(2, "tom3");
ppst.setInt(3, 14);
ppst.executeUpdate();

ppst.close();
coon.close();
}



Hive客户端JDBC连接操作_第4张图片

Hive客户端JDBC连接操作_第5张图片

Hive客户端JDBC连接操作_第6张图片

// 删除记录       不支持

@Test
public  void delete() throws Exception{
PreparedStatement ppst = coon.prepareStatement("delete from hive1.users");
ppst.executeUpdate();
ppst.close();
coon.close();
}

org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:266)
at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:252)
at org.apache.hive.jdbc.HiveStatement.runAsyncOnServer(HiveStatement.java:309)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:250)
at org.apache.hive.jdbc.HiveStatement.executeUpdate(HiveStatement.java:448)
at org.apache.hive.jdbc.HivePreparedStatement.executeUpdate(HivePreparedStatement.java:119)
at com.jhy.hive.hive2.TestCRUD.delete(TestCRUD.java:71)
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:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.
at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:388)
at org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:193)
at org.apache.hive.service.cli.operation.SQLOperation.runInternal(SQLOperation.java:276)
at org.apache.hive.service.cli.operation.Operation.run(Operation.java:324)
at org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal(HiveSessionImpl.java:499)
at org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync(HiveSessionImpl.java:486)
at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:78)
at org.apache.hive.service.cli.session.HiveSessionProxy.access$000(HiveSessionProxy.java:36)
at org.apache.hive.service.cli.session.HiveSessionProxy$1.run(HiveSessionProxy.java:63)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:59)
at com.sun.proxy.$Proxy35.executeStatementAsync(Unknown Source)
at org.apache.hive.service.cli.CLIService.executeStatementAsync(CLIService.java:295)
at org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement(ThriftCLIService.java:506)
at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1437)
at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1422)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.hadoop.hive.ql.parse.SemanticException: Attempt to do update or delete using transaction manager that does not support these operations.
at org.apache.hadoop.hive.ql.parse.UpdateDeleteSemanticAnalyzer.analyzeInternal(UpdateDeleteSemanticAnalyzer.java:67)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:250)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:477)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1242)
at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1229)
at org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:191)
... 26 more



//统计记录

@Test

public  void count() throws Exception{
PreparedStatement ppst = coon.prepareStatement("select count(*) from myhive.users");
    ResultSet rs =ppst.executeQuery();
    rs.next();
    System.out.println(rs.getInt(1));
ppst.close();
coon.close();
}



Hive客户端JDBC连接操作_第7张图片

Hive客户端JDBC连接操作_第8张图片

/*

*删除表

*/

@Test
public  void deletetable() throws Exception{
PreparedStatement ppst = coon.prepareStatement("drop table myhive.users");
    ppst.execute();
ppst.close();
coon.close();
}

}

Hive客户端JDBC连接操作_第9张图片

Hive客户端JDBC连接操作_第10张图片

Hive客户端JDBC连接操作_第11张图片

基本的操作结束了

你可能感兴趣的:(Hive)