Hive:根据查询结果插入多个表

Posted

技术标签:

【中文标题】Hive:根据查询结果插入多个表【英文标题】:Hive : inserting into multiple tables based on query result 【发布时间】:2012-03-12 11:51:14 【问题描述】:

我正在尝试运行配置单元查询来过滤无效记录。这是我正在做的 1. 将 csv 文件加载到单列表中。 2.定义一个UDF my_validation 来验证每条记录 3. 执行查询

from pgstg INSERT OVERWRITE LOCAL DIRECTORY '/tmp/validrecords.out'  
select * where  my_validation(record) IS NOT NULL
INSERT OVERWRITE TABLE PGERR
select record where  my_validation(record) IS  NULL;

这是我的问题: 一种。有没有更好的方法来过滤无效记录; 湾。 my_validation UDF 是否在整个表上运行两次? C。将单列拆分为多列的最佳方法是什么。

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

回答您的问题:

1) 如果您有自定义验证标准 UDF 可能是要走的路。如果我这样做,我会创建一个返回布尔值的 is_valid UDF(而不是返回 NULL 与非 NULL)。

2) 是的,UDF 确实运行了两次。

3) 很高兴你问。查看 Hive 中可用的 explode 函数

【讨论】:

以上是关于Hive:根据查询结果插入多个表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用具有多个结果的子查询将值插入表中?

几种保存Hive查询结果的方法

MySQL - 学习笔记 - 查询结果插入到另一个表

Hive学习笔记——保存select结果,Join,多重插入

hive多个分区插入同一个表

每次在表中插入后根据查询结果发送电子邮件 - Talend