
分桶及抽样查询分桶表数据存储分桶抽样查询其他常用查询函数空字段赋值CASE WHEN行转列列转行窗口函数Rank---------------------------笔记-----------------------分桶 为了分散数据需要指定按什么字段分以及分几个桶建表不能用load导入因为不走MR程序所以采用insert方式加载数据桶个数即为numsReducetask个数。注还需要设置一个属性强制分桶否则看不到文件被划分抽样查询分区可以用来增加过滤条件分桶也可以。因为分桶机制可以只查询特定文件因此可用于抽样。格式select * from 表名 tablesample (bucket X out of Y on id);设总桶数为Zy: 相隔几个桶再次抽取z/y 表示一共抽取几桶所以y必须是桶数z的因子或倍数X从第几桶开始抽 需满足1 X Y;例子 x 1, z 4 ,y 2则抽取 z/y 2桶从第一桶是 1开始 第3桶。空字段赋值函数说明NVL给值为NULL的数据赋值它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL则NVL函数返回replace_with的值否则返回string1的值如果两个参数都为NULL 则返回NULL。case when基本语法案例行转列一列多行变成一列一行。concat:concat_ws(separator,str1,str2,…):第一个参数为分隔符后面的可以为字符数组collect_set(x):返回一个set集合去重collect_list(x),返回一个list集合不去重。列转行一列一行转一列多行EXPLODE(col)将hive一列中复杂的array或者map结构拆分成多行。map会被拆分成两列key和valueLATERAL VIEW:用法LATERAL VIEW udtf(expression) tableAlias AS columnAlias解释用于和split, explode等UDTF一起使用它能够将一列数据拆成多行数据在此基础上可以对拆分后的数据进行聚合。案例窗口函数相关函数说明OVER()指定分析函数工作的数据窗口大小这个数据窗口大小可能会随着行的变而变化CURRENT ROW当前行n PRECEDING往前n行数据n FOLLOWING往后n行数据UNBOUNDED起点UNBOUNDED PRECEDING 表示从前面的起点 UNBOUNDED FOLLOWING表示到后面的终点LAG(col,n)往前第n行数据LEAD(col,n)往后第n行数据NTILE(n)把有序分区中的行分发到指定数据的组中各个组有编号编号从1开始对于每一行NTILE返回此行所属的组的编号。注意n必须为int类型。补充日期函数year(param):返回参数的年份month(param):返回参数的月份substring(str,pos[, len]):截取字符串聚集函数默认工作范围式分组后的每个组内。窗口函数 函数 窗口函数当前要调用的函数。一般是一个UDAF函数。 窗口指当前函数的工作范围计算的数据集的范围//over()中既不定义wind 子句也没有order by窗口范围默认为整个数据集//当指定order by但是没有显示定义winddow字句哪么窗口默认为上无边界到当前行。窗口函数操作的范围不会超过窗口的大小.特殊情况 ①只有order by没有窗口子句默认窗口的大小是从上无边界到当前行 ②没有order by没有窗口子句默认窗口的大小是从上无边界到下无边界