使用另一个表中的select创建外部表

问题描述 投票:7回答:3

我正在使用HDInsight,并且在完成运行查询后需要删除我的集群。但是,我需要我收集的数据才能存活一天。我正在处理将从table1创建计算列并将它们插入table2的查询。首先,我想要一个简单的测试来复制行。你可以从select语句创建一个外部表吗?

drop table if exists table2;

create external table table2 as
select *  
from table1
STORED AS TEXTFILE LOCATION 'wasb://{container name}@{storage name}.blob.core.windows.net/';
hive hdinsight
3个回答
7
投票

是的,但你必须将它分成两个命令。首先创建外部表然后填充它。

create external table table2(attribute STRING)
STORED AS TEXTFILE
LOCATION 'table2';

INSERT OVERWRITE TABLE table2 Select * from table1;

table2的模式必须与select查询相同,在本例中它只包含一个字符串属性。


1
投票

我知道这是一个过于陈旧的问题,但这是解决方案。

CREATE EXTERNAL TABLE table2
STORED AS textfile
LOCATION wasb://....
AS SELECT * FROM table1

0
投票

由于Hive不支持使用“as select”子句创建外部表,因此首先需要使用完整的DDL命令创建外部表,然后将数据加载到表中。请通过this获取不同的数据格式支持。

create external table table_ext(col1 typ1,...)
STORED AS ORC
LOCATION 'table2'; // optional if not provided then default location is used

INSERT OVERWRITE TABLE table_ext Select * from table1;

确保table_ext与table1具有相同的DDL。

© www.soinside.com 2019 - 2024. All rights reserved.