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