如何在Java中执行Hive命令或HiveQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中执行Hive命令或HiveQL相关的知识,希望对你有一定的参考价值。

Java在1.5过后提供了ProcessBuilder根据运行时环境启动一个Process调用执行运行时环境下的命令或应用程序(1.5以前使用Runtime),关于ProcessBuilder请参考Java相关文档。调用代码如下:
String sql="show tables; select * from test_tb limit 10";
List<String> command = new ArrayList<String>();
command.add("hive");
command.add("-e");
command.add(sql);
List<String> results = new ArrayList<String>();
ProcessBuilder hiveProcessBuilder = new ProcessBuilder(command);
hiveProcess = hiveProcessBuilder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(
hiveProcess.getInputStream()));
String data = null;
while ((data = br.readLine()) != null)
results.add(data);

其中command可以是其它Hive命令,不一定是HiveQL。
参考技术A java client 中hql执行跟数据库jdbc操作基本相同
1. maven工程依赖hive-jdbc相关jar包,其他工程类型参见maven repsository 相关依赖提示.

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-jdbc</artifactId>

<version>2.1.0</version>

</dependency>
2. 书写相关代码,如果有链接池配置相关参数就好,注意链接池和hive-jdbc版本问题,过高的链接池版本配置hive-jdbc较低时,在连接校验时会出现unsupport异常.
// 加载驱动

Class.forName("org.apache.hive.jdbc.HiveDriver ");

// connection 为java.sql.Connection

Connection connection = DriverManager.getConnection("jdbc:hive2://locahost:10000/test");

// TODO:后续操作跟数据库jdbc操作一样,不要忘记关闭数据库连接.

以上是关于如何在Java中执行Hive命令或HiveQL的主要内容,如果未能解决你的问题,请参考以下文章

如何将 HiveQL 查询的结果输出到 CSV?

问题解决系列:java运行HiveQL,报错:java.lang.NoClassDefFoundError_ org_apache_hadoop_conf_Configuration

如何将数据从 Spark SQL 导出到 CSV

HiveQL:索引

通过 Spark R 操作 Hive

Hive组件以及执行过程