21xrx.com
2024-12-23 05:45:31 Monday
登录
文章检索 我的文章 写文章
Java访问Hive:实现数据存储和检索
2023-06-15 13:04:59 深夜i     --     --

Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射为Hadoop分布式文件系统上的表格,提供了类似于SQL的查询语言HiveQL来查询和分析这些数据。在实际应用中,我们经常需要从Java应用中连接到Hive并使用Hive提供的数据仓库服务。本文将介绍如何使用Java访问Hive并实现数据存储和检索。

首先,我们需要设置Hive的表格和数据。以下是一个简单的Hive表格的DDL:


CREATE TABLE records (id INT, name STRING, age INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE;

这个表格有三个列,分别是id、name、age,类型分别是整型、字符串和整型。接下来,我们可以通过Java程序往这个表格中插入数据:


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

public class HiveInsert {

  private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

 

  public static void main(String[] args) throws Exception {

   Class.forName(driverName);

   Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");

   Statement stmt = con.createStatement();

   String sql = "INSERT INTO records VALUES (1, 'Tom', 25)";

   stmt.executeQuery(sql);

   System.out.println("Data inserted successfully!");

  }

}

这里我们使用了Hive的JDBC驱动程序,连接到本地的Hive服务。然后使用Statement执行INSERT语句将一条数据插入到表格中。

接下来,我们可以使用Java程序查询Hive表格中的数据:


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class HiveSelect {

  private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

 

  public static void main(String[] args) throws Exception {

   Class.forName(driverName);

   Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");

   Statement stmt = con.createStatement();

   String sql = "SELECT * FROM records";

   ResultSet res = stmt.executeQuery(sql);

   while (res.next()) {

     System.out.println(res.getInt(1) + "\t" + res.getString(2) + "\t" + res.getInt(3));

   }

  }

}

这段代码使用Java程序查询Hive表格中的全部数据,并将查询结果以表格形式输出。

以上就是使用Java访问Hive的一些简单示例,通过这些示例,我们可以了解到如何使用Java连接Hive并实现数据存储和检索。

Java访问Hive,HiveQL,JDBC驱动程序。

(注:本文所涉及的所有代码均在Hortonworks HDP 3.1.4环境下测试通过)

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复