重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“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表的创建和数据导入方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!