zoukankan      html  css  js  c++  java
  • 怎样在Java中运行Hive命令或HiveQL

           这里所说的在Java中运行Hive命令或HiveQL并非指Hive Client通过JDBC的方式连接HiveServer(or HiveServer2)运行查询,而是简单的在部署了HiveServer的server上运行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<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。

           本文产生于个人工作学习笔记,转载请注明出处http://blog.csdn.net/horace20

  • 相关阅读:
    LeetCode 152. 乘积最大子数组 | Python
    LeetCode 31. 下一个排列 | Python
    LeetCode 136. 只出现一次的数字 | Python
    LeetCode 102. 二叉树的层序遍历 | Python
    LeetCode 155. 最小栈 | Python
    LeetCode 69. x 的平方根 | Python
    Python3 高阶函数
    Python3 装饰器
    Python3 递归函数
    Python3 函数
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7083506.html
Copyright © 2011-2022 走看看