hive里的JDBC编程入门

HiveJDBC示例

在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。在hive安装目录下的bin,使用下面命令进行开启:

    hive -service hiveserver &  //Hive低版本提供的服务是:Hiveserver
    hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服务是:Hiveserver2

  我这里使用的Hive1.0版本,故我们使用Hiveserver2服务,下面我使用 Java 代码通过JDBC连接Hiveserver。

  18.1  测试数据

本地目录/home/hadoop/下的djt.txt文件内容(每行数据之间用tab键隔开)如下所示:

  1        dajiangtai
  2        hadoop
  3        Hive
  4        hbase
  5        spark

    18.2  程序代码

  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  public class HiveJdbcTest1 {
           private static String driverName = "org.apache.Hive.jdbc.HiveDriver";//Hive驱动名称
           private static String url = "jdbc:Hive2://djt11:10000/default";//连接Hive2服务的连接地址,Hive0.11.0以上版本提供了一个全新的服务:HiveServer2
           private static String user = "hadoop";//对HDFS有操作权限的用户
           private static String password = "";//在非安全模式下,指定一个用户运行查询,忽略密码
           private static String sql = "";
           private static ResultSet res;
           public static void main(String[] args) {
               try {
                   Class.forName(driverName);//加载HiveServer2驱动程序
                   Connection conn = DriverManager.getConnection(url, user, password);//根据URL连接指定的数据库
                   Statement stmt = conn.createStatement();
                 
                   //创建的表名
                   String tableName = "testHiveDriverTable";
                 
                   /** 第一步:表存在就先删除 **/
                   sql = "drop table " + tableName;
                   stmt.execute(sql);
                 
                   /** 第二步:表不存在就创建 **/
                   sql = "create table " + tableName + " (key int, value string)  row format delimited fields terminated by ‘\t‘ STORED AS TEXTFILE";
                   stmt.execute(sql);
                 
                   // 执行“show tables”操作
                   sql = "show tables ‘" + tableName + "‘";
                   res = stmt.executeQuery(sql);
                   if (res.next()) {
                       System.out.println(res.getString(1));
                   }
                 
                   // 执行“describe table”操作
                   sql = "describe " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {  
                       System.out.println(res.getString(1) + "\t" + res.getString(2));
                   }
                 
                   // 执行“load data into table”操作
                   String filepath = "/home/hadoop/djt.txt";//Hive服务所在节点的本地文件路径
                   sql = "load data local inpath ‘" + filepath + "‘ into table " + tableName;
                   stmt.execute(sql);
                 
                   // 执行“select * query”操作
                   sql = "select * from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getInt(1) + "\t" + res.getString(2));
                   }
                 
                   // 执行“regular Hive query”操作,此查询会转换为MapReduce程序来处理
                   sql = "select count(*) from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getString(1));
                   }        
                   conn.close();
                   conn = null;
               } catch (ClassNotFoundException e) {
                   e.printStackTrace();
                   System.exit(1);
               } catch (SQLException e) {
                   e.printStackTrace();
                   System.exit(1);
               }
           }
  }

     18.3  运行结果(右击-->Run as-->Run on Hadoop)

   执行“show tables”运行结果:

        testHivedrivertable

     执行“describe table”运行结果:

      key    int
      value    string

     执行“select * query”运行结果:

      1        dajiangtai
      2        hadoop
      3        Hive
      4        hbase
      5        spark

      执行“regular Hive query”运行结果:

      5


hive jdbc使用

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

时间: 2024-08-18 18:15:21

hive里的JDBC编程入门的相关文章

编程范式 —— 函数式编程入门

该系列会有 3 篇文章,分别介绍什么是函数式编程.剖析函数式编程库.以及函数式编程在 React 中的应用,欢迎关注我的 blog 命令式编程和声明式编程 拿泡茶这个事例进行区分命令式编程和声明式编程 命令式编程 1.烧开水(为第一人称) 2.拿个茶杯 3.放茶叶 4.冲水 声明式编程 1.给我泡杯茶(为第二人称) 举个 demo // 命令式编程 const convert = function(arr) { const result = [] for (let i = 0; i < arr.

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面

1Mybatis入门--1.1单独使用jdbc编程问题总结

1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = Dri

hive里的扩展接口

hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和Beeline都是交互式用户接口,并且功能相似,但是语法和实现不同. JDBC是一种类似于编程访问关系型数据库的编程接口. 1.CLI 在UNIX shell环境下输入hive命令可以启用Hive CLI.在CLI下,所有的Hive语句都以分号结束. 在CLI下可以对一些属性做出设置,像是设置底层MapReduce任务中Reducer的实例数.这些信息都详细地记录在在线Hive语言手册中

编程入门指南

前言 如今编程成为了一个越来越重要的「技能」:作为设计师,懂一些编程可能会帮你更好地理解自己的工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或许根本不知道从哪里开始:入门轻松度过初级材料的学习后,发现学习越来越困难,陡峭的学习曲线又让你望而却步:你知道如何在页面上打印输出一些文本行,但是你不知道何时该进行一个真正的有用的项目:你不清楚自己还有哪些不知道的东西,你甚至搞不清下一步该学什么. 这篇文章的内容对此不仅会有一些方向性的建议,

JDBC编程的步骤

一.进行JDBC编程的步骤大致如下: 1.      加载数据库驱动,通常使用Class类的forName()静态方法来加载驱动.如下代码: Class.forName(dirvirClass) 上面代码中的driverClass就是数据库驱动类所对应的字符串 加载MySQL数据库时采用的代码为: Class.forName("com.mysql.jdbc.Driver"); 2.      通过DriverManager获取数据库连接. DriverManager.getConnec

Linux下的shell编程入门

通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者shell脚本来实现. 一.简介 Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂.Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令. 下面我们来看一个简单的shell程序: 1.首先建立一个

第15篇-JAVA JDBC编程

第15篇-JAVA JDBC编程 每篇一句 :对于勇敢者,尝试是一条崭新的生活之路 初学心得: 但对于坎坷与泥泞,能以平常之心视之,就非常不容易 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-08| JAVA JDBC编程 ] 1.JDBC概述 通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是是Java语言的巨大魅力所在 由于Java语言的跨平台特性,所以使用JDBC API所编写的程序不仅可以实现跨数据库,还可以跨平台,具有非常优秀的可移植性

(转载)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)

上一节VS2010/MFC编程入门教程中鸡啄米讲了按钮控件Button.Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件开发中如何使用. 因为Button控件在前面的例子中涉及到了,比较简单,本文就不作深入分析了,而是重点讲解单选按钮Radio Button.复选框Check Box的使用. 按钮控件实例的功能 首先介绍此实例实现的功能.此实例用来根据网站类型选择网站,并将选择的网站的名称显示到编辑框中.网站类型有"