Hive和Jdbc示例

重要:在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。使用下面命令进行开启:hive -service hiveserver &

1). 测试数据
userinfo.txt文件内容(每行数据之间用tab键隔开):

1   xiapi2    xiaoxue3    qingqing

2). 程序代码

 1 packagecom.ljq.hive;import java.sql.Connection;
 2 import java.sql.DriverManager;import java.sql.ResultSet;
 3 import java.sql.SQLException;import java.sql.Statement;
 4 import org.apache.log4j.Logger;
 5 public class HiveJdbcClient {
 6 private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
 7 private staticString url = "jdbc:hive://192.168.11.157:10000/default";
 8 private staticString user = "hive";
 9 private static String password = "mysql";
10 private staticString sql = "";
11 private static ResultSet res;
12 private static finalLogger log = Logger.getLogger(HiveJdbcClient.class);
13 public static voidmain(String[] args) {
14 try {
15             Class.forName(driverName);
16             Connection conn = DriverManager.getConnection(url,user, password);
17              Statement stmt =conn.createStatement();
18  // 创建的表名
19              String tableName ="testHiveDriverTable";
20  /** 第一步:存在就先删除 **/
21              sql = "drop table" + tableName;
22              stmt.executeQuery(sql);
23  /** 第二步:不存在就创建 **/
24              sql = "createtable " + tableName + " (key int, value string)  row format delimited fields terminated by‘\t‘";
25              stmt.executeQuery(sql);
26 // 执行“show tables”操作
27              sql = "show tables‘" + tableName + "‘";
28              System.out.println("Running:" + sql);
29              res =stmt.executeQuery(sql);
30              System.out.println("执行“showtables”运行结果:");
31              if (res.next()) {
32                  System.out.println(res.getString(1));
33              }
34 // 执行“describe table”操作
35              sql = "describe" + tableName;
36              System.out.println("Running:" + sql);
37              res =stmt.executeQuery(sql);
38              System.out.println("执行“describetable”运行结果:");
39             while (res.next()) {
40                   System.out.println(res.getString(1) + "\t" +res.getString(2));
41             }
42 // 执行“load data into table”操作
43             String filepath ="/home/hadoop/ziliao/userinfo.txt";
44             sql = "load datalocal inpath ‘" + filepath + "‘ into table " + tableName;
45             System.out.println("Running:" + sql);
46             res =stmt.executeQuery(sql);
47             // 执行“select * query”操作
48            sql = "select *from " + tableName;
49            System.out.println("Running:" + sql);
50            res = stmt.executeQuery(sql);
51            System.out.println("执行“select* query”运行结果:");
52            while (res.next()) {
53                System.out.println(res.getInt(1) + "\t" + res.getString(2));
54             }
55  // 执行“regular hive query”操作
56            sql = "selectcount(1) from " + tableName;
57            System.out.println("Running:" + sql);
58            res =stmt.executeQuery(sql);
59            System.out.println("执行“regularhive query”运行结果:");
60            while (res.next()) {
61                  System.out.println(res.getString(1));
62            }
63            conn.close();
64            conn = null;
65            } catch (ClassNotFoundException e) {
66                 e.printStackTrace();
67                 log.error(driverName +" not found!", e);
68                 System.exit(1);
69            } catch (SQLException e) {
70                 e.printStackTrace();
71                 log.error("Connection error!", e);
72                 System.exit(1);
73             }
74        }
75 }                        

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

Running:show tables‘testHiveDriverTable‘执行“show tables”运行结果:

testhivedrivertable

Running:describe testHiveDriverTable

执行“describe table”运行结果:

key   intvalue    string

Running:load data local inpath‘/home/hadoop/ziliao/userinfo.txt‘ into table testHiveDriverTable

Running:select * fromtestHiveDriverTable

执行“select * query”运行结果:1    xiapi2    xiaoxue3   qingqing

Running:select count(1) fromtestHiveDriverTable

执行“regular hive query”运行结果:3

时间: 2024-10-09 02:16:25

Hive和Jdbc示例的相关文章

presto集群安装&整合hive|mysql|jdbc

Presto是一个运行在多台服务器上的分布式系统. 完整安装包括一个coordinator(调度节点)和多个worker. 由客户端提交查询,从Presto命令行CLI提交到coordinator. coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker中. 目录: 搭建前环境准备 集群计划 连接器 安装步骤 配置文件 运行presto 整合hive测试 整合mysql测试 整合jdbc测试 1.搭建前环境准备 CentOS 6.7 java8 Python3.4.4

hive 采用JDBC编码方式获取外部分区表数据

由于最近项目的需求,仔细研究了下采用hive JDBC编码的方式来实现命令行模式执行hql语句的功能.期间遇到了不少问题,并一一进行了分析解决.但是时间匆忙,本人并未能将遇到的问题逐一记录在案.凭借零零稀稀的记忆希望将这些问题和经验进行总结以备后用. 项目中有个需求就是实现通过hql条件查询语句查询出hive外部分区表中的数据,并将这些数据保存到本地文件中.直接贴出查询的主要类似代码如下: String driverName = "org.apache.hadoop.hive.jdbc.Hive

Hive中jdbc接口

1.hive开放jdbc接口,开发需要导入jar如下 commons-logging-1.0.4.jarhadoop-common-2.6.0.jarhive_exec.jarhive_jdbc.jarhive_metastore.jarhive_service.jarhttpclient-4.2.5.jarhttpcore-4.2.5.jarlibfb303.jarlog4j-1.2.16.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar 2.开发的实

java 操作hive通过jdbc

直接代码吧:记得要开启hive jdbc服务hive --service hiveserver package hive; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class HiveDemo { static{ //注册jdbc驱动 try { Class.forName("org.apache.

Hive的JDBC

Hive 的JDBC 包含例子 https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC HiveServer2的JDBC 说明 https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients

【Hive】JDBC操作

1 package com.java.hadoop.hive; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 10 import org.apache.had

[转]MySQL的简单使用和JDBC示例

MySql简单操作 //启动mysql net start mysql //登陆 mysql -u root -p //创建建数据库 create database mydb; create database test; //删除数据库 drop database test; //使用数据库 use mydb; //创建表 create table mytable(name varchar(20),sex char); //显示数据库中所有表 show tables; //增加一列 alter

hive通过jdbc创建表,分区,桶

首先我们需要打开hiveserver服务:hive --service hiveserver 然后我们和操作普通数据库一样,先加载驱动,然后建立连接,接着创建一个statement,然后执行查询,然会结果集.代码如下(一定要写对sql语句,要仔细,下面的需要注意的地方我已经标示出来了:) package playHive; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; i

SPARK_sql加载,hive以及jdbc使用

sql加载 格式  或者下面这种直接json加载 或者下面这种spark的text加载 以及rdd的加载 上述记得配置文件加入.mastrt("local")或者spark://master:7077 dataset的生成  下面是dataframe  下面是dataset $ bin/spark-shell --master spark://master01:7077 --jars mysql-connector-java-5.1.27-bin.jar  加载连接的两种方式 // N