hive

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

2018-06-28  本文已影响41人  数据小白鼠

背景

对导入数仓的数据和导入前的文件数据进行验证,尝试采用如下方式。

说明

  1. 这里所说的在 Java 中执行 Hive 命令或者 HiveQL 并不是指 Hive Client 通过 JDBC 的方式连接 HiveServer(or HiveServer2)执行查询,而是简单的在部署了 HiveServer 的服务器上执行 Hive 命令。当然这是一个简单的事情,平常我们通过 Hive 做简单的数据分析实验的时候,都是直接进入 Hive 执行 HiveQL ,那我们为什么还要在程序中执行呢?
  2. 这里涉及到了一个问题,通过进入 Hive 执行 HiveQL ,我们只能将分析结果打印到屏幕或是存入临时表,那如果我们想把分析结果写入文件,或者我们想对分析结果做进一步的分析,用程序做分析,该怎么办?这就是为什么要在 Java 中执行 Hive 命令。

代码实现

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);
Process 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。

原文:https://www.2cto.com/database/201406/308606.html

上一篇下一篇

猜你喜欢

热点阅读