`
wang吖
  • 浏览: 241575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HIve的JavaAPI操作

阅读更多

基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI

  1. CLI,即Shell命令行
  2. JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
  3. WebGUI是通过浏览器访问 Hive

本文主要介绍的就是第二种用户接口,直接进入正题。

 1、Hive 安装:

        1)hive的安装请参考网上的相关文章,测试时只在hadoop一个节点上安装hive即可。

        2)测试数据data文件'\t'分隔:

              1   zhangsan

              2    lisi

              3   wangwu

        3)将测试数据data上传到linux目录下,我放置在:/home/hadoop01/data 

 2、在使用 JDBC 开发 Hive 程序时,  必须首先开启 Hive 的远程服务接口。使用下面命令进行开启:

  

hive --service hiveserver >/dev/null 2>/dev/null &

 

 

 3、测试代码:

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;

/**
 * Hive的JavaApi
 * 
 * 启动hive的远程服务接口命令行执行:hive --service hiveserver >/dev/null 2>/dev/null &
 * 
 * @author 吖大哥
 * 
 */
public class HiveJdbcCli {

	private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
	private static String url = "jdbc:hive://hadoop3:10000/default";
	private static String user = "hive";
	private static String password = "mysql";
	private static String sql = "";
	private static ResultSet res;
	private static final Logger log = Logger.getLogger(HiveJdbcCli.class);

	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = getConn();
			stmt = conn.createStatement();

			// 第一步:存在就先删除
			String tableName = dropTable(stmt);

			// 第二步:不存在就创建
			createTable(stmt, tableName);

			// 第三步:查看创建的表
			showTables(stmt, tableName);

			// 执行describe table操作
			describeTables(stmt, tableName);

			// 执行load data into table操作
			loadData(stmt, tableName);

			// 执行 select * query 操作
			selectData(stmt, tableName);

			// 执行 regular hive query 统计操作
			countData(stmt, tableName);

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			log.error(driverName + " not found!", e);
			System.exit(1);
		} catch (SQLException e) {
			e.printStackTrace();
			log.error("Connection error!", e);
			System.exit(1);
		} finally {
			try {
				if (conn != null) {
					conn.close();
					conn = null;
				}
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	private static void countData(Statement stmt, String tableName)
			throws SQLException {
		sql = "select count(1) from " + tableName;
		System.out.println("Running:" + sql);
		res = stmt.executeQuery(sql);
		System.out.println("执行“regular hive query”运行结果:");
		while (res.next()) {
			System.out.println("count ------>" + res.getString(1));
		}
	}

	private static void selectData(Statement stmt, String tableName)
			throws SQLException {
		sql = "select * from " + tableName;
		System.out.println("Running:" + sql);
		res = stmt.executeQuery(sql);
		System.out.println("执行 select * query 运行结果:");
		while (res.next()) {
			System.out.println(res.getInt(1) + "\t" + res.getString(2));
		}
	}

	private static void loadData(Statement stmt, String tableName)
			throws SQLException {
		String filepath = "/home/hadoop01/data";
		sql = "load data local inpath '" + filepath + "' into table "
				+ tableName;
		System.out.println("Running:" + sql);
		res = stmt.executeQuery(sql);
	}

	private static void describeTables(Statement stmt, String tableName)
			throws SQLException {
		sql = "describe " + tableName;
		System.out.println("Running:" + sql);
		res = stmt.executeQuery(sql);
		System.out.println("执行 describe table 运行结果:");
		while (res.next()) {
			System.out.println(res.getString(1) + "\t" + res.getString(2));
		}
	}

	private static void showTables(Statement stmt, String tableName)
			throws SQLException {
		sql = "show tables '" + tableName + "'";
		System.out.println("Running:" + sql);
		res = stmt.executeQuery(sql);
		System.out.println("执行 show tables 运行结果:");
		if (res.next()) {
			System.out.println(res.getString(1));
		}
	}

	private static void createTable(Statement stmt, String tableName)
			throws SQLException {
		sql = "create table "
				+ tableName
				+ " (key int, value string)  row format delimited fields terminated by '\t'";
		stmt.executeQuery(sql);
	}

	private static String dropTable(Statement stmt) throws SQLException {
		// 创建的表名
		String tableName = "testHive";
		sql = "drop table " + tableName;
		stmt.executeQuery(sql);
		return tableName;
	}

	private static Connection getConn() throws ClassNotFoundException,
			SQLException {
		Class.forName(driverName);
		Connection conn = DriverManager.getConnection(url, user, password);
		return conn;
	}

}

 

4、测试结果

 

5、终端查询结果:

hive> select * from testHive;

OK

1       zhangsan

2       lisi

3       wangwu

Time taken: 11.232 seconds

hive> 

 

 

  • 大小: 205 KB
分享到:
评论

相关推荐

    hive metastore java api使用

    同样hive metastore也提供了java接口。 使用 import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.api.Field...

    HiveAPI:用Java编写的Hive Rest API

    总结来说,HiveAPI是Java开发的一个实用工具,它利用REST API封装了与Apache Hive的交互,使得在大数据环境下的数据操作变得更加简单、高效。通过理解HiveAPI的工作原理和使用场景,开发者能够更好地利用这个工具来...

    java访问hive数据库所需全部jar包

    2. **Java API for Hive**:Hive提供了Java API,允许开发者通过编写Java代码来连接、查询和操作Hive数据库。这个API包括Hive JDBC驱动和Hive Metastore服务客户端,使得Java应用程序能够与Hive Server交互。 3. **...

    hive-java开发驱动包

    hive java开发驱动包列表hive-common-2.3.4.jarhive-exec-2.3.4.jarhive-jdbc-2.3.4.jarhive-llap-client-2.3.4.jarhive-llap-common-2.3.4.jarhive-llap-server-2.3.4.jarhive-llap-tez-2.3.4.jarhive-metastore-...

    javaApi_sparkhiveAPI_hbaseAPI.zip

    本压缩包"javaApi_sparkhiveAPI_hbaseAPI.zip"包含了2019年8月至10月期间针对这些技术的Java版API实现,以及与Spark相关的Hive和HBase API。以下是关于这些技术的详细知识: 1. **Java API for Hive**: - **Hive*...

    Hive_JDBC.zip_hive java_hive jdbc_hive jdbc pom_java hive_maven连

    Hive JDBC(Java Database Connectivity)是Hive提供的一种接口,使得其他编程语言,如Java,能够通过JDBC驱动程序与Hive进行交互,实现数据查询、分析和操作。本教程将深入讲解如何使用Hive JDBC在Java项目中建立与...

    使用javaJDBC连接hive数据,实现简单的操作!

    在本教程中,我们将深入探讨如何使用Java JDBC连接到Hive数据库,并执行基本的数据操作。Hive是一个基于Hadoop的数据仓库工具,它允许我们对大规模数据集进行SQL-like查询。 首先,我们需要在Java项目中引入Hive ...

    java解决hive快速导数据到Hbase代码

    2. **获取Hive数据**:使用Hive的Java API(如Hive Metastore Thrift Client)连接到Hive服务,查询并获取所需的数据。这通常涉及到解析HQL(Hive SQL)查询,获取查询结果集。 3. **预处理数据**:根据HBase的存储...

    java_hive简单查询

    本教程将深入探讨如何使用Java API与Hive进行集成,实现简单的查询操作。我们将围绕以下知识点展开讨论: 1. **Hive简介**: Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并...

    hadoop+hive+mapreduce的java例子

    基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 Web...

    java jdbc连接hive所需要所有jar包,请测有效。

    Java JDBC(Java Database Connectivity)是Java编程语言中与数据库交互的一种标准接口,它允许Java程序通过JDBC API连接并操作各种类型的数据库系统。Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件...

    hive-storage-api-2.6.0.jar

    java运行依赖jar包

    hive-java-sdk:Hive Java SDK的新改进

    Hive Java SDK是用于与Apache Hive进行交互的一种编程接口,主要服务于Java开发者,它使得在Java应用程序中执行HQL(Hive查询语言)或者管理Hive表变得简单易行。新改进可能涉及到性能优化、功能增强、API简化、错误...

    flink-connector-hive-2.11-1.12.7-API文档-中文版.zip

    标签:apache、flink、connector、hive、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    星环hive-8.0.2 java 依赖包全集

    因此,这些依赖包可能涉及Inceptor的API、连接器、优化器或其他核心组件,帮助开发者在Java应用中无缝集成和操作Inceptor数据仓库。 总结来说,这个"星环hive-8.0.2 java 依赖包全集"是针对星环Inceptor 8.0.2版本...

    SpringBoot整合hive-jdbc示例

    它为Hive提供了标准的数据库访问方式,使得开发者能够像操作关系型数据库一样操作Hive。 ### 2. SpringBoot项目准备 首先,我们需要一个基础的SpringBoot项目。确保你的项目中已经集成了Spring Data JPA或者...

    Hive内部表合并小文件Java程序

    这里我们将详细讨论如何通过Java程序实现Hive内部表的小文件合并。 首先,理解Hive内部表和外部表的区别是关键。内部表的数据由Hive完全管理,删除内部表会同时删除其对应的数据。而外部表仅仅是一个指向实际数据的...

    hive+mysql-connector-java-5.1.38.zip

    JDBC驱动程序使得开发者能够使用标准的Java SQL API来执行SQL语句,操作MySQL数据库。 这三个文件组合在一起,主要用于在Hive中集成MySQL数据库。在Hive中,可以通过配置Hive的JDBC驱动来连接外部数据源,如MySQL,...

    sql developer hive连接java包

    这些JAR文件包含了连接Hive所需的各种API和类,使得SQL Developer能够通过Java语言与Hive服务通信。以下是给定的压缩包文件中的部分关键JAR文件及其作用: 1. **hive_metastore.jar**: 这个文件包含了Hive元数据...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    项目文件"SparkOnHiveToEs_v1"可能包含了实现上述步骤的Java源代码,包括Spark配置、Hive连接、数据处理逻辑和ElasticSearch的写入操作。通过阅读和理解这些代码,可以深入学习如何在实际项目中整合这些技术。 ...

Global site tag (gtag.js) - Google Analytics