2015-05-29 19 views
5

Tôi đang sử dụng HDInsight và cần xóa cụm của mình khi tôi hoàn tất các truy vấn đang chạy. Tuy nhiên, tôi cần dữ liệu tôi thu thập để tồn tại trong một ngày khác. Tôi đang làm việc trên các truy vấn có thể tạo các cột được tính toán từ table1 và chèn chúng vào bảng 2. Trước tiên, tôi muốn có một thử nghiệm đơn giản để sao chép các hàng. Bạn có thể tạo một bảng bên ngoài từ một câu lệnh chọn không?Tạo bảng bên ngoài với lựa chọn từ bảng khác

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/'; 

Trả lời

4

có nhưng bạn phải tách riêng nó thành hai lệnh. Đầu tiên tạo bảng bên ngoài sau đó điền vào nó.

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

INSERT OVERWRITE TABLE table2 Select * from table1; 

Giản đồ bảng 2 phải giống như truy vấn chọn, trong ví dụ này, nó chỉ bao gồm một thuộc tính chuỗi.

+0

Nó phàn nàn của RMR: Không thể di chuyển "wasb: // {name chứa} @ {name} lưu trữ .blob.core.windows.net /" vào thùng rác, vì nó có chứa các thùng rác. Xem xét sử dụng tùy chọn -skipTrash – Roger

+0

nơi bạn đặt -skipTrash? – Roger

+0

Đây từng là một [bug] (https://issues.apache.org/jira/browse/HIVE-6469) nhưng bây giờ nên được sửa bằng cách sử dụng lệnh PURGE kể từ khi hive 0.14 [PURGE] (https: // cwiki .apache.org/confluence/display/Hive/LanguageManual + DDL # LanguageManualDDL-DropTable) – FtoTheZ

0

Tôi biết đây là câu hỏi quá cũ nhưng đây là giải pháp.

CREATE EXTERNAL TABLE table2 
STORED AS textfile 
LOCATION wasb://.... 
AS SELECT * FROM table1 
Các vấn đề liên quan