Hive基础操作

hive的常用操作,不是很全的那种

创建数据库

cearte database [if not exists] db.hive;

表的相关操作

-- 创建表
create table [if not exists] student(
    name string,
    age int,
    score int)
row format delimited fileds terminated by '\t';

-- 创建子表——从表中提取出所需要的字段
create table if not exists db_hive.emp_cats
as
select name, age, from student;

-- 清除表数据,但不删除表
truncate table dept_cats;

-- 建立表结构相同的表
create table if not exists student_like
like
test.student;

-- 修改表的名称
alter table dept_like rename to dept_like_rename;

-- 删除表(好像会卡住
drop table if exists dept_like_rename;

-- 创建外部表
-- 外部表在删除时不会删掉内置的数据
create external table if not exists db_hive.emp_external(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
row format delimited fields terminated by '\t'
location '/user/root/hive/warehouse/emp_external';

-- 建立二分区表
set hive.exec.dynamic.partition.mode=nonstrict; # 允许动态分区
-- 静态分区 
create external table if not exists db_hive.emp_partition2(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
PARTITIONED BY (month string, day string)
row format delimited fields terminated by '\t'
location '/user/root/hive/warehouse/emp_external';

load data local inpath '/root/data_emp/emp.txt' into table db_hive.emp_partition2
partition (month='201810', day='21');

SELECT * FROM emp_partition2 where month='201810' and day='21';
-- 动态分区(分区的字段必须在后面)
FROM raw_access_log 
INSERT OVERWRITE TABLE
partitioned_raw_access_log
PARTITION(year,month,day)
SELECT ip.....year,month,day
-- 混合模式
FROM raw_access_log 
INSERT OVERWRITE TABLE
partitioned_raw_access_log
PARTITION(year="2007",month,day)
SELECT ip.....month,day

-- 分桶模式
FROM table_test
CLUSTERED BY (column_name,...) INTO 8 BUCKETS//与分区不同的是列名必须是已经存在的列名

-- 将数据导入分桶表
-- 首先设置reduce数量和Buckets数量一直,即最终决定产生多少个文件
-- hive.enforce.sorting和hive.enforce.bucketing设置为true,免了dirtribute by & sort by
SET hive.enforce.bucketing=true;
SET mapred.reduce.tasks=200;
FROM table_fa
INSERT OVERWRITE TABLE table_son
SELECT ...,request_date
WHERE ...
[DISTRIBUTE BY ...][SORT BY ...]

-- 修复分区
MSCK REPAIR TABLE table_name;

四个by

-- order by 全局排序,仅仅只有一个reducer
	select * from emp order by empno desc;
-- sort by 对每一个reduce内部进行排序,全局结果集不是排序的
	set mapreduce.job.reduces=3;
	select * from emp sort by empno asc;
	insert overwrite local directory '/opt/datas/sortby_res' select * from emp sort by empno asc;
-- distribute by 分区,类似mapreduce中partitioner,对数据分区,
	通常结合sort by使用
	insert overwrite local directory '/opt/datas/distby_res' select * from emp
	distribute by deptno sort by empno asc;
-- cluster by 当distribute by的字段和sort by的字段相同时就可以用cluster by代替
	insert overwrite local directory '/opt/datas/clusterby_res' select * from emp
	cluster by empno asc;

获取表的信息

-- 获取基本信息
desc student;
-- 获取详细信息
desc formatted student

数据导入

将文件信息导入
# 将本地数据信息载入数据表
load data local inpath '/data/student.txt' into table db_hive.student;
# 将HDFS数据载入数据表
load data inpath '/student.txt' into table db_hive.student;
将表中信息筛筛选导入
hive> insert into table test
    > partition (age='25')
    > select id, name, tel
    > from wyp;

数据导出

	# 1.常见导出insert overwrite local directory '/opt/datas/test.txt' select * from emp;
	# 2.定义格式
insert overwrite local directory '/opt/datas/test1.txt' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n'
select * from emp;
	# 3.hive -e "select * from ..." > /opt/datas/xx.txt
	# 4.保存到HDFS上
	insert overwrite directory '' 
		ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n'
		select * from emp_partition;
	5.sqoop

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spark RPC原理

    Spark-1.6以后RPC默认使用Netty替代Akka,在Netty上加了一层封装,为实现对Spark的定制开发,所以了解Spark中RPC的原理还是有必要...

    俺也想起舞
  • Sqoop 常用操作

    Sqoop 的lib中缺少Hive 的jar包,从Hive 中找的缺少的jar包到Sqoop中即可

    俺也想起舞
  • HIVE:JOIN原理、优化

    hive的一些join操作以及hivejoin操作的优化

    俺也想起舞
  • 六中常用串口电路图大全

    六中常用串口图设计。如果你是Win95/98/Me操作系统的话那第1和第2两种是最合适的,制作简单。如果是Win2000/XP操作系统的话第3种最合适,当然如果...

    机器人网
  • Rainbond Java Maven 多模块源码构建

    Maven 多模块项目是根据 pom.xml 文件(下面简称 pom)来划分的, Rainbond 对它的识别也是建立在 pom 的基础上的. 主要是识别出具体...

    Rainbond开源
  • 音视频技术(1)- 参考资料

    1. 音视频开发进阶指南(笔者主要从事移动端开发,以这本书入门,通篇了解音视频处理比较合适):

    sumsmile
  • 学术资讯 | 优Tech分享-优图3D人脸重建技术的研究与应用

    10月19日,腾讯优图实验室高级研究员玮剑在优tech线上沙龙,围绕《3D人脸重建技术的研究与应用实例》这一主题进行了直播分享,讲述了优图自建3D人脸基底及3D...

    优图实验室
  • 大数据ETL实践探索(4)---- 搜索神器Elastic search

    本系列文章主要针对ETL大数据处理这一典型场景,基于python语言使用Oracle、aws、Elastic search 、Spark 相关组件进行一些基本的...

    流川疯
  • 使用Java Rest Client操作Elasticsearch

    我是攻城师
  • 戴口罩的人脸数据被公开贩卖:两毛一张,能用于训练算法精准度也能申请信用贷款!

    “新冠疫情之下,京东数科、汉王、百度、腾讯、云从科技、中科视拓等众多科技企业纷纷推出或开放了自己“戴口罩状态下的人脸识别”技术。殊不知,方便了居民、秀了肌肉的同...

    数据猿

扫码关注云+社区

领取腾讯云代金券