我怎样才能做到这一点?
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
2条答案
按热度按时间bksxznpy1#
我知道这是老生常谈,但根据定义,但如果其他人有同样的问题,答案是相当直接的。
根据定义,
CREATE TABLE AS SELECT
用于将结果集持久化为表。这意味着,如果希望新表具有不同的列名,则需要使用不同的结果集来创建它。一种简单的方法是使用列别名:我知道您说过不想这样做(虽然有一个小的输入错误-您的查询将失败,因为它将尝试命名两列c),但希望这能解释为什么您应该这样做:您需要构建一个数据集,其元数据与您要创建的表相匹配。
5us2dqdw2#
当您指定从另一个表获取模式时,无需再次提及表模式。所以您的表创建语句应该是