用户登录
用户注册

分享至

mapreduce hive java

  • 作者: 黄山老婆婆
  • 来源: 51数据库
  • 2020-09-23
这里所说的在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。




  可以参照以下代码来实现:

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);??
}
软件
前端设计
程序设计
Java相关