DISTRIBUTE BY
我们都知道,MapReduce模型是默认是通过hashPartitioner()函数将key/value的keys的hash值来数据分发到对应的Reducers,
DISTRIBUTE BY可以让用户来控制如何将key/value对分发到哪个Reducer。
这在大多数的情况下通常很有用。但是在默写情况下,用户可能需要有自己来决定按某一个字段来将数据分发到Reducers,如下所示:
hive> SELECT s.ymd,s.symbol,s.price_close FROM stocks s
> DISTRIBUTE BY s.symbol
> SORT BY s.symbol ASC,s.ymd ASC;
需要注意的是,DISTRIBUTE BY通常要和SORT BY使用,并且DISTRIBUTE BY必须使用在SORT BY之前。
CLUSTER BY
在上个使用DISTRIBUTE BY的示例中,由DISTRIBUTE BY按s.symbol字段将数据分发到相应的Reducers,然后又SORT BY对Reducer最终输出的数据按s.symbol和s.ymd做升序排序。
CLUSTER BY关键字可以起到DISTRIBUTE BY和SORT BY相同的功能:
hive> SELECT s.ymd,s.symbol,s.price_close FROM stocks s
> CLUSTER BY s.symbol;
使用
DISTRIBUTE BY和
CLUSTER BY都可以起到对Reducers的输出做并行排倒序。
类型转化(Casting)
之前我们已经学习过数据类型转化的示例,如将一个数值转化为FLOAT类型,转换语法为cast(value AS TYPE),比如:
SELECT name,salary FROM employees
WHERE cast(salary AS FLOAT) < 100000.0
如果salary不能转换成FLOAT类型的值的话,Hive会返回NULL。
转换二进制类型的值
从Hive 0.80开始,Hive开始支持二进制类型的值的转换。将BINARY的值b转换成STRING:
SELECT (2.0 * cast(cast(b AS STRING) AS DOUBLE)) FROM src;
同样也可以讲STRING类型转换成BINARY类型。
采样查询
有些时候,用户并不想对一个大数据集的数据做全部的分析处理,对于这种情况,Hive提供了对bucket table的采样查询功能:
hive> SELECT * FROM numbers TABLESAMPLE(BUCKET 1 OUT OF 2 ON number)s;
Hive中的桶下标是从1开始的。
Block数据块数据采样(Block Sampling)
Hive还提供了另外一种采样的语法——Block数据块数据采样,用户可以一个数据块的数据行(rows)采样:
hive> SELECT * FROM numbersflat TABLESAMPLE(0.1 PERCENT) s;
UNION ALL
UNION ALL可以将两个或多个子查询的结果集合并到一块儿,这就要就要合并的结果集必须要有相同的列数,并且相对应的列要有相匹配的类型:
SELECT log.ymd,log.level,log.message
FROM(
SELECT l1.ymd,l1.level,l1.message,'log1' AS source FROM log1 l1
UNION ALL
SELECT l2.ymd,l3.level,l2.message,'log2' AS source FROM log2 l2
) log
SORT BY log.ymd ASC
分享到:
相关推荐
hadoop,hive,pig,zookeeper,hbase,hdfs
HIVE编程指南中文版,是由programing hive翻译过来
编程1 编程的最终评估1
Hive编程指南中文版翻译,Hive programing
只要它可以帮助正在学习新算法的人,它是否从某个地方复制并不重要。 图形示例也将非常有帮助。 不要忘记包括测试。 不要删除以前的算法实现。 只需使用您自己的实现添加一个新文件。 美化和清理您的代码以便于阅读...
Programing with MFC Programing with MFC
直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = http'-f demo.hql #this用于将txt文件存储在azure中 直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = ...
c++ programingc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ ...
The c programing language
Python-programing:Python代码
The c programing language 经典的C语言著作,被评为“C语言四书五经”之一,深入学习C语言必读。
programming in python3.非扫描版,可以进行搜索的pdf
programing in scala中文版的scala教程哦。
安装依赖项npm install node filename.js Python python filename.py 不Leetcode 等级朗格公司再来1个简单的JavaScript 2个简单的JavaScript 3简单的JavaScript 4简单的JavaScript 5简单的JavaScript 6简单的...
Web-Programing-Assignment:SNU 2021-1 Web编程分配
第1章 对象的演化 1 ...第3章 隐藏实现 42 第4章 初始化与清除 55 第5章 函数重载与缺省参数 69 第6章 输入输出流介绍 83 第7章 常量 124 第8章 内联函数 142 第9章 命名控制 157 第10章 引用和拷贝构造函数 176
Programing with MFC Programing with MFC
Programing C# 3.0(5th edition)
Advanced Linux Programing
how to programing 的书中代码。很有用的!