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

2024-12-18 02:20:12
推荐回答(1个)
回答1:

这里所说的在Java中执行Hive命令或HiveQL并不是指Hive Client通过JDBC的方式连接HiveServer(or HiveServer2)执行查询,而是简单的在部署了HiveServer的服务器上执行Hive命令。当然这是一个简单的事情,平常我们通过Hive做简单的数据分析实验的时候,都是直接进入Hive执行HiveQL

       

通过进入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 command = new ArrayList();  
  
command.add("hive");  
command.add("-e");  
command.add(sql);  
  
List results = new ArrayList();  
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。