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;
}