整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

12.7.1 查询数据 排序和聚集

hadoop 小红牛 6℃ 0评论

这一节讨论如何使用SELECT语句的各种形式从Hive中检索数据。

在Hive中可以使用标准的ORDER
BY子句对数据进行排序。但这里有一 个潜在的不利因素。ORDER BY能够预期产生完全排序的结果,但它是通
过只用一个reducer来做到这一点的。所以对于大规模的数据集,它的效率
非常低。Hive将来的发布版本有望使用8.2.3节介绍的技术来支持高效的

并行排序。

在很多情况下,并不需要结果是全局排序的。此时,可以换用Hive的非标 准的扩展SORT BY。SORT BY为每个reducer产生一个排序文件。

在有些情况下,你需要控制某个特定行应该到哪个reducer,其目的通常是 为了进行后续的聚集操作。这就是Hive的DISTRIBUTE BY子句所做的事 情。下面的例子根据年份和气温对气象数据集进行排序,以确保所有具有 相同年份的行最终都在同一个reducer分区中:®

hive> FROM records2 
>SELECT year, temperature
>DISTRIBUTE BY year
>SORT BY year ASC, temperature DESC;
1949  111
1949  78
1950  22
1950  0
1950  -11

后续的査询(或把这个査询作为内嵌子査询的某个査询,详情参见12.7.4节) 可以利用在同一文件中已经分好组并(以降序)排好序的年份气温。

如果SORT BY和DISTRIBUTE BY中所用的列相同,可以缩写为CLUSTER BY以便同时指定两者所用的列。

转载请注明:全栈大数据 » 12.7.1 查询数据 排序和聚集

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址