2015-05-29 23 views
5

Sto utilizzando HDInsight e devo eliminare i miei cluster quando ho finito di eseguire le query. Tuttavia, ho bisogno dei dati che raccolgo per sopravvivere per un altro giorno. Sto lavorando su query che creerebbero colonne calcolate da table1 e le inseriremo in table2. Per prima cosa volevo un semplice test per copiare le righe. Puoi creare una tabella esterna da un'istruzione select?Crea tabella esterna con selezione dall'altra tabella

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

risposta

4

sì ma è necessario separarlo in due comandi. Prima crea il tavolo esterno e poi riempilo.

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

INSERT OVERWRITE TABLE table2 Select * from table1; 

Disposizione del table2 deve essere la stessa della query di selezione, in questo esempio costituito da un solo attributo di stringa.

+0

Si lamenta di RMR: Impossibile spostare "wasb: // {nome del contenitore} @ {nome} stoccaggio .blob.core.windows.net /" nel cestino, in quanto contiene la spazzatura. Prendi in considerazione l'utilizzo dell'opzione -skipTrash – Roger

+0

dove imposta -skipTrash? – Roger

+0

Questo era un [bug] (https://issues.apache.org/jira/browse/HIVE-6469), ma ora dovrebbe essere corretto usando il comando PURGE poiché hive 0.14 [PURGE] (https: // cwiki .apache.org/confluence/display/Hive/LanguageManual + DDL # LanguageManualDDL-DropTable) – FtoTheZ

0

So che questa è una domanda troppo vecchia ma ecco la soluzione.

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