hive:create table as select命令无法指定目标表的列列表

y3bcpkx1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(1230)

我怎样才能做到这一点?

hive> desc temp;
  OK
  a                     int                                         
  b                     int                                         
  Time taken: 0.077 seconds, Fetched: 2 row(s)

我想创建列名为c和d的t2配置单元表,但出现以下错误。

hive> create table t2(c int,d int) as select a,b from temp;
  FAILED: SemanticException [Error 10065]: CREATE TABLE AS SELECT command         cannot specify the list of columns for the target table
bksxznpy

bksxznpy1#

我知道这是老生常谈,但根据定义,但如果其他人有同样的问题,答案是相当直接的。
根据定义, CREATE TABLE AS SELECT 用于将结果集持久化为表。这意味着,如果希望新表具有不同的列名,则需要使用不同的结果集来创建它。一种简单的方法是使用列别名:

create table t2 as select a as c, b as d from temp;

我知道您说过不想这样做(虽然有一个小的输入错误-您的查询将失败,因为它将尝试命名两列c),但希望这能解释为什么您应该这样做:您需要构建一个数据集,其元数据与您要创建的表相匹配。

5us2dqdw

5us2dqdw2#

当您指定从另一个表获取模式时,无需再次提及表模式。所以您的表创建语句应该是

create table t2 as select a,b from temp;

相关问题