本篇内容主要讲解“hive 分区partition表的创建和数据导入方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hive 分区partition表的创建和数据导入方法”吧!
分区创建与数据导入的步骤:
1.创建分区表(以外部分区表为例)
create external table if not exists dividends(
ymd string,
dividend string)
partitioned by (ex_change string,symbol string)
row format delimited fields terminated by ',';
2.创建还有分区表字段与分区字段的内部表(管理表)
内部表的字段应该包含红色字段,建表略
3.将数据导入2中创建的表。load data……
4.通过内部表静态或者动态将数据插入分区表
非常重要的动态分区属性:
hive.exec.dynamic.partition 是否启动动态分区。false(不开启) true(开启)默认是 false
hive.exec.dynamic.partition.mode 打开动态分区后,动态分区的模式,有 strict和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict则无此要求。各自的好处,大家自己查看哈。
hive.exec.max.dynamic.partitions 允许的最大的动态分区的个数。可以手动增加分区。默认1000
hive.exec.max.dynamic.partitions.pernode 一个 mapreduce job所允许的最大的动态分区的个数。默认是100
在进行动态分区插入时,经常会因为这些配置参数的值报错,所以习惯查看日志明确错误。我遇到的报错信息:
Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 100
表名由于分区数量超值,所以通过修改参数值就能够避免这样的错误了。
1)静态插入数据
注意:方框中的字段位置以及个数一定要与分区表(dividends)的字段位置以及个数相符合,否则会报出类似如下的错误
FAILED: SemanticException [Error 10044]: Line 1:23 Cannot insert into target table because column number/types are different 'symbol': Table insclause-0 has 3 columns, but query has 4 columns.
从上面错误提示看出,查询的表有4列,而目标表格(也就是需要插入数据的表格)有3列,由于列的数目不一样,导致了上面的语句不能成功运行,所以我们需要保证查询结果列的数目和需要插入数据表格的列数目一致。
2)动静态混合分区插入
截图有错误信息,相信大家知道这是什么原因了吧!!!
一定要注意动态分区参数值以及1)的注意事项
3)动态分区插入
截图中的报错!!是配置参数值问题哦!
到此,相信大家对“hive 分区partition表的创建和数据导入方法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。