Hive使用方式

Hive的常用方式

Hive 和 Hbase 的区别

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
Hive不支持更新操作,不适于实时查询。可通过一些过滤条件批量查询结果。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。
Hbase适用于大数据的实时查询。

Hive shell命令

使用的是类sql语句

1.进入hive
hive
2.查询库
show databases;
3.使用库
use default;
4.查看表
show tables;
5.查询表结构
desc tableName;
6.查询表数据
select * from tableName;
7.创建数据库
create database dbName;
8.删除数据库
drop database if exists dbName;
9.创建数据表
// 内部表 create table tableName (id string, name string) row format delimited fields terminated by ","
//分区表 create external table tableName (id string, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE location '/path/';
10.清空表
truncate table tableName;
11.查看表结构
describe extended tableName;
12.导入数据
load data local inpath "/path/data.csv" into table tableName;
13.修改表结构
alter table tableName replace columns (id string, name string, age int);
还有好多好多 待续。。。

Hive Java JDBC连接方式

1.准备JDBC包或依赖 必须与所在的hadoop的版本一致

https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc

(由于我的hadoop版本是2.6.5,没有找到依赖… 所以最后找了一个对应版本的JDBC的jar包)

最近发现可以找到新的hive的jdbc依赖

https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh5_maven_repo.html

可以在这里找到对应的版本,需要指定仓库

<repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>

2.连接Hive

需要driver驱动的类,一般为:org.apache.hive.jdbc.HiveDriver
因为我下的包比较奇怪,我的是:com.cloudera.hiveserver1.hive.core.Hive1JDBCDriver
主要是找Driver类的位置

url是hive的地址:jdbc:hive2://127.0.0.1:10000/databaseName
user极有可能是:hive
password急有可能是:

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


public class HiveConnection {
    private static String driverName;
    private static String url;
    private static String user;
    private static String password;

    private static Connection connection;

	//可添加自己相应的配置
    public static void addConf(HiveConfiguration config){
        driverName = config.getDriverName();
        url = config.getUrl();
        user = config.getUser();
        password = config.getPassword();
    }

    public static Connection getConnection(){
        try {
            if (connection == null) {
                Class.forName(driverName);
                connection = DriverManager.getConnection(url, user, password);
            }
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e){
            e.printStackTrace();
        }
        return connection;
    }

    public static void close(){
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3.通过Java查询操作Hive

private static ResultSet execSql(String sql){
        Connection conn = HiveConnection.getConnection();
        try {
            Statement state = conn.createStatement();
            ResultSet result = state.executeQuery(sql);
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值