2015-05-29 63 views
5

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

回答

4

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

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

INSERT OVERWRITE TABLE table2 Select * from table1; 

表2的模式必须是一样的选择查询,在此示例中只包含一个字符串属性。

+0

它抱怨 RMR的:不能将 “wasb:// {容器名称} @ {存储名} .blob.core.windows.net /” 的垃圾,因为它包含了垃圾桶。考虑使用-skipTrash选项 – Roger

+0

你在哪里设置-skipTrash? – Roger

+0

这是一个[bug](https://issues.apache.org/jira/browse/HIVE-6469),但现在应该使用自配置单元0.14 [PURGE]之后的PURGE命令修复(https:// cwiki .apache.org/confluence/display/Hive/LanguageManual + DDL#LanguageManualDDL-DropTable) – FtoTheZ

0

我知道这是过时的问题,但这里是解决方案。

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