Hive的静态分区、动态分区

Hive的静态分区、动态分区,第1张

Hive的静态分区动态分区

静态分区:若分区的值是确定的,那么称为静态分区。新增分区或者是加载分区数据时,已经指定分区名。

动态分区:分区的值是非确定的,由输入数据来确定

分区注意细节

(1)、尽量不要用动态分区,因为动态分区的时候,将会为每一个分区分配reducer数量,当分区数量多的时候,reducer数量将会增加,对服务器是一种灾难。

(2)、动态分区和静态分区的区别,静态分区不管有没有数据都将会创建该分区,动态分区是有结果集将创建,否则不创建。

(3)、hive动态分区的严格模式和hive提供的hivemapredmode的严格模式。

语法:

假设我们有一个表叫employee ,拥有如 Id, Name, Salary, Designation, Dept, 和 yoj (即加盟年份)字段。

假设需要检索所有在2017年加入,查询搜索整个表所需的信息员工的详细信息。

但是,如果用年份分区雇员数据并将其存储在一个单独的文件,它减少了查询处理时间。

例如:/employee/employeedata/2017/file2017

语法:

例如:

语法:

例如:

语法:

例如:

方法一:利用编辑器直接插入控制字符,以Vi为例。进入Vi:Shell代码收藏代码$visupply-20110101txt在Vi命令模式下,键入:setlist,设置控制字符可见,成功后Vi会立即显示一个行结束标志$。填入Hive表中需要的每列数据,比如我这里需要创建一个

报错,因为没有设置set hiveexecdynamicpartition=true和set hiveexecdynamicpartitionmore=nonstrick这两个参数

设置两个参数 当前窗口关闭之后这个设置就无效了,需要重新设置 ,再插入数据

再次查看d_part表,分区值已经被设置成salary的值了

查看此时d_part表的分区情况

partitioned by (dp string,value string) 、partition(dp,value) 、name as dp, salary as value这三个部分顺序必须一致

查看此时的d_part_2表,name字段作为分区字段dp的值,salary字段作为value字段的值

hivesql sql — 获取指定hive表或指定文件中所有hive表的DDL,如果有按天的分区则默认执行最近7天的分区DDL。同时,table支持符合sql语法的正则表达式,如果有多个表匹配,则提示用户选择(使用file则自动关闭该交互功能)。

以上就是关于Hive的静态分区、动态分区全部的内容,包括:Hive的静态分区、动态分区、Hive命令-分区篇、hive如何获取shell当天日期,并创建分区表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9418116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存