博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive篇--相关概念和使用二
阅读量:7077 次
发布时间:2019-06-28

本文共 1313 字,大约阅读时间需要 4 分钟。

一.基本概念

Hive分桶:

1.概念

分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。

对于hive中每一个表分区都可以进一步进行分桶。(可以对列,也可以对表进行分桶)
由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

2.设置

set hive.enforce.bucketing=true;

默认:false;设置为true之后,mr运行时会根据bucket的个数自动分配reduce task个数。(用户也可以通过mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)
注意:一次作业产生的桶(文件数量)和reduce task个数一致。

3.用途

桶表 抽样查询

select * from bucket_table tablesample(bucket 1 out of 4 on columns);
TABLESAMPLE语法:
TABLESAMPLE(BUCKET x OUT OF y)
x:表示从哪个bucket开始抽取数据
y:必须为该表总bucket数的倍数或因子

4.创建分桶表

CREATE TABLE psnbucket( id INT, name STRING, age INT)
CLUSTERED BY (age) INTO 4 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

Hive Lateral View概念

作用:

Lateral View用于和UDTF函数(explode、split)结合来使用。

首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。
主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题
语法:

LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)

举例 :

select count(distinct(myCol1)), count(distinct(myCol2)) from psn2

LATERAL VIEW explode(likes) myTable1 AS myCol1
LATERAL VIEW explode(address) myTable2 AS myCol2, myCol3;

Hive 运行方式

1.CLI方式:

1.1 与hdfs交互

        执行执行dfs命令
        例:dfs –ls /

1.2 与Linux交互

      !开头 例: !pwd
2.Hive脚本运行方式:

hive -e ""

hive -e "">aaa
hive -S -e "">aaa(简化一些输出比如时间等等)。
hive -f file
hive -i /home/my/hive-init.sql
hive> source file (在hive cli中运行)

 

转载于:https://www.cnblogs.com/LHWorldBlog/p/8284531.html

你可能感兴趣的文章
如何挖掘NAND Flash的IO性能
查看>>
微软私有云分享(R2)19Azure Pack与远程控制台
查看>>
探查 SQL Server 虚拟日志文件
查看>>
aix6 11G RAC 异机恢复至单实例测试
查看>>
购华为第1书,写书评赢大奖
查看>>
Tcpdump的详细用法
查看>>
Python学习笔记一(Python数据类型)
查看>>
咬定青山、立根破岩
查看>>
生产环境大于254台机器网段划分及路由解决方案详解01
查看>>
“春Phone计划”51CTO沙龙武汉站分享
查看>>
传统项目跟互联网结合的详细推广方法
查看>>
美团点评上市,王兴的野心和局限
查看>>
《基于插件的日志采集技术实践》幻灯片下载
查看>>
Exchange Server 2010 SP2 命令行部署
查看>>
用python和redis开发高性能监控平台及框架升级过程
查看>>
Idc服务都白菜价儿了,云化还是问题吗
查看>>
corosync+pacemaker+http高可用操作手记
查看>>
MySQL压力测试工具 mysqlslap
查看>>
QTP IDE中的垂直分割选取
查看>>
[网摘学习]Shell脚本编程学习入门:Shell编程基础
查看>>