使用select from other table创建外部表

时间:2015-05-29 19:25:06

标签: hive hdinsight

我正在使用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/';

3 个答案:

答案 0 :(得分:7)

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

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

INSERT OVERWRITE TABLE table2 Select * from table1;

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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。