hive基础

hive wiki

https://cwiki.apache.org/confluence/display/Hive#Home-UserDocumentation

hive的3种运行模式:

内嵌模式:将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
本地模式:这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这就可以支持多会话和多用户连接了。
远程模式:此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。

知识早知道

Hive 并不提供实时的查询和基于行级的数据更新操作;
Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析;
Hive实际上是把sql语句转化为map reduce任务执行;

初始化hive的元数据库
schematool -dbType derby/mysql -initSchema
hive-site.xml配置信息
  1. hive.metastore.warehouse.dir:该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
  2. hive.exec.scratchdir:该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
hive管理

以jdbc或odbc的程序登录到hive中操作数据时,必须选用远程服务启动方式;

hive  --service hiveserver &

查看hive的内置函数

show functions

在hive cli中查看hdfs目录

dfs -lsr /tmp/ (r:以递归的方式查看)

在hive cli中运行本地linux命令(加感叹号)

!pwd

在linux下直接运行hive命令

hive -e "show tables"

进入hive静默模式(不打印调试信息,如map,reduce任务信息,直接输出结果)

hive -S

显示数据库

show databases;

显示表

show tables;

查看表结构

desc tableName;

设置 hive cli(hive client:hive客户端)显示当前数据库

set hive.cli.print.current.db=true;

创建和使用数据库

create database chendb;
use chendb;

运行sql文件

source sql文件
hive数据类型
基本类型
复杂数据类型
时间类型
hive表操作
内部表
create table if not exists person(
id int,
name string,
age int
);

创建表时指定列与列之间的分隔符

create table test3(name string,age int) row format delimited fields terminated by ",";

通过已存在的表创建表

create table test2 as select * from test1
外部表

指向已在hdfs中存在的数据,可以创建partition

外部表只是一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除外部表时,仅删除该链接;

create external table if not exists person_1(
id int,
name string,
age int
) location '/home/hive/external';

location 指向一个目录;

表删除后目录也被删除了;

如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里

分区表
create table if not exists person(
id int,
name string
) partitioned by (sex string);

插入

insert into table person partition(sex="f") values(1,"chen","f");

查看执行计划 explain,对比有分区的执行效率

explain select * from test1 where age=24;
Bucket表(桶表)

桶表是对数据进行哈希取值,然后放到不同文件中存储;

create table cluster_table(id int,name string) clustered by(name) into 5 buckets
视图表

https://blog.youkuaiyun.com/AnneQiQi/article/details/51422155

创建视图

CREATE VIEW valid_records AS
SELECT * FROM records2
WHERE temperature != 999

删除视图

drop view if exists view_name;

hive不支持物化视图,mysql和oracle支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值