2014-10-02 70 views
4

我是Hive的新手,我想知道插入覆盖是否会覆盖我创建的现有表。 我想筛选已经创建的表,我们称之为TableA,只选择年龄大于18的行。我可以使用插入覆盖表来实现这一点吗?Hive插入覆盖表

我想写东西喜欢的:

INSERT OVERWRITE TABLE TableA SELECT a.Age FROM TableA WHERE a.Age > = 18 

有NA在我创建的表项,但我相信,经过我过滤此表会出现在年龄栏没有来港,右?

回答

17

自我过滤和插入不支持,但在配置单元中。

我建议以下步骤在您的情况:

  1. 创建一个类似的表,说塔布,具有相同的结构。

    create table tabB like tableA; 
    

2.然后你就能把自己的过滤器,并插入到这个新表。

 INSERT OVERWRITE TABLE tabB SELECT a.Age FROM TableA WHERE a.Age > = 18 

希望这有助于。

+0

是的,它绝对有帮助。另外,如果我有多个Age列(表示家族中的不同成员),我将如何在执行INSERT OVERWRITE TABLE时选择多个列? – 2014-10-03 13:34:13

+0

你插入覆盖表后添加任何逻辑,一个大的子查询 – 2014-10-03 13:51:10

+0

如果有帮助,请接受答案 – 2014-10-03 13:51:28