将数据插入 Hive 分区表时出错

Posted

技术标签:

【中文标题】将数据插入 Hive 分区表时出错【英文标题】:Error inserting data into Hive partitioned table 【发布时间】:2021-08-17 03:14:58 【问题描述】:

我正在尝试将数据插入带有分区的 Hive 表中,分区条件是昨天的 yyyyMMdd 格式的日期,我想动态地执行此操作,因此我使用查询生成它。日期查询在我的其他选择语句中工作正常,但是在插入时会引发如下错误:

Error picture

你们能帮帮我吗?谢谢你,祝你有美好的一天。

【问题讨论】:

这是我的声明:INSERT OVERWRITE TABLE dwh_vts.staging_f_vts_sale_revenue PARTITION(date=DATE_FORMAT(date_sub(CURRENT_DATE,1),'yyyyMMdd')) VALUES ('N350','10','4500000.000000' ),('T280','21','3760000.000000'); Hive 不支持分区规范中的函数,请阅读这个答案:***.com/a/64171676/2700344 【参考方案1】:

您可以创建一个视图来加载数据或调整您的 sql 来执行此操作。确保您将此日期列作为最后一列,并在表中按此列进行分区。

INSERT OVERWRITE TABLE dwh_vts.staging_f_vts_sale_revenue PARTITION(`date`) 
SELECT 'N350','10','4500000.000000',DATE_FORMAT(date_sub(CURRENT_DATE,1),'yyyyMMdd')
union
SELECT 'T280','21','3760000.000000',,DATE_FORMAT(date_sub(CURRENT_DATE,1),'yyyyMMdd')

或者你可以把上面的 SQL 放到一个视图中,然后从视图中插入覆盖。

【讨论】:

以上是关于将数据插入 Hive 分区表时出错的主要内容,如果未能解决你的问题,请参考以下文章

Hive插入多个分区时OOM故障解决记录

Hive动态分区与静态分区,数据插入,区别

Hive如何根据表中某个字段动态分区

Hive动态分区

Hive 动态分区

hive从查询中获取数据插入到表或动态分区