2016-05-05 14 views
1

Ich möchte eine neue Tabelle basierend auf Spalten aus einer vorhandenen Tabelle erstellen, fügen Sie eine neue Partition Spalte in der Struktur.in Hive SQL, erstellen Sie Tabelle basierend auf Spalten aus einer anderen Tabelle mit Partition Schlüssel

Und ich möchte das Ziel in Bienenstock sql erreichen.

Gibt es einen anderen Weg als die folgenden sql oder ETL-Tools wie Wasserkocher verwenden.

create table if not exists table_name(
col1,
col2,
col3,
……,
coln
)partitioned by dt;

in denen col1 bis coln sind aus der bereits älteren Tabelle existiert, und dt, wird die Partition Schlüssel neu hinzugefügt.

Da die ältere Tabelle zu groß ist, könnte sie Hunderte von Spalten enthalten, deren Auflistung ermüdend wäre.

jedoch die folgende SQL-Syntax-Fehler zeigt:

create table if not exists table_name like older_table_name partitioned by dt;

Also würde ich gerne wissen, gibt es eine andere bessere Möglichkeit, dies in Hive SQL zu lösen? Danke.

Antwort

1

Wenn alle Spalten und dt columnYou können folgende Arten verwenden die partitionierten Tabelle zu erstellen:

CREATE TABLE newtable (col1 int, col2 string) PARTITIONED BY (dt string) AS 
SELECT col1 , col2, dt FROM oldtable WHERE dt is not null; 
Verwandte Themen