码迷,mamicode.com
首页 > 其他好文 > 详细

在Impala 和Hive里进行数据分区(1)

时间:2017-01-12 16:28:22      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:数据分区   hive   impala   hadoop   大数据   


进行数据分区将会极大的提高数据查询的效率,尤其是对于当下大数据的运用,是一门不可或缺的知识。那么数据怎么创建分区呢?数据怎样加载到分区呢?

  • Impala/Hive按State分区Accounts

(1)示例:accounts是非分区表

技术分享

通过以上方式创建的话,数据就存放在accounts目录里面。那么,如果Loudacre大部分对customer表的分析是按state来完成的?比如:

技术分享

这种情况下如果数据量很大,为了避免全表扫描的发生,我们可以去创建分区。如果不创建分区的话,它会默认所有查询不得不扫描目录的所有文件。创建分区按state将数据存储到不同的子目录,当按照“NY”的条件进行查询的时候,它只会扫描到子目录,下面我具体来看一下分区创建。

二、分区创建

(1)使用PARTITIONED BY来创建分区表

技术分享

在这里注意state是被删除掉的,因为它作为分区字段,我们知道分区数据是不会出现在实际的文件当中的,所以state作为分区字段是不会出现在列当中的。换句话说,分区键就是一个虚列,它是不会存在列当中的。那么,如何去查看我们分区的列呢?它会出现在我们的结构当中吗?会的。

三、查看分区列

使用DESCRIBE显示分区列,它会出现在结构最后一列,它是一个虚列,并不是真实在数据中存在的列。

技术分享

我们创建单个分区,但有时候会有嵌套分区,如何来处理呢?

四、创建嵌套分区:

技术分享

创建好了分区,我们怎么加载数据到分区呢?有两种方式动态分区和静态分区。动态分区是指Impala/Hive在加载的时候自动添加新的分区,数据基于列值存储到正确的分区(子目录)。而静态分区需要我们通过ADD PARTITION提前去定义分区的名称,当加载数据的时候,指定存储数据到哪个分区。那么动态分区和静态分区各有什么特征呢?后续为大家接着分享。

     对于大数据,我们应该积极主动的去迎合和学习,因为它没有成熟的体系,还在发展上升,只有不断学习提升才可以赶上发展的步伐。建议在平时大家多学习交流,我在平常喜欢关注“大数据cn”这个微信公众号,对于我个人而言,很不错,推荐围观。

 


本文出自 “11872756” 博客,请务必保留此出处http://11882756.blog.51cto.com/11872756/1891301

在Impala 和Hive里进行数据分区(1)

标签:数据分区   hive   impala   hadoop   大数据   

原文地址:http://11882756.blog.51cto.com/11872756/1891301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!