hive
Erstellen Sie eine Datenbank- und Tabellenanweisung
Suche…
Syntax
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [Datenbankname.] Tabellenname
[(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (Col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (Col_name, Col_name, ...) [SORTED BY ( col_name [ASC | DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) - (Hinweis: Verfügbar in Struktur 0.10.0 und höher)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [ALS VERZEICHNIS GESPEICHERT] [[ROW FORMAT row_format] [STORED AS file_format] | GESPEICHERT VON 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
[AS select_statement];CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [Datenbankname]. Tabellenname LIKE bestehende_Tabelle_oder_Ansichtsname [LOCATION hdfs_path];
data_type: primitiv_type, array_type, map_type, struct_type, union_type
primitive_type: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (Präzision, Skala), DATE, VARCHAR, CHAR
array_type: ARRAY <data_type>
map_type: MAP <primitiver_Typ, Daten_Typ>
struct_type: STRUCT <col_name: data_type [COMMENT col_comment], ...>
union_type: UNIONTYPE <Datentyp, Datentyp, ...>
row_format: DELIMITED [FELDER BEENDET DURCH char [ABGEBOGEN DURCH char] [Sammlungsgegenstände bei char] [KARTENSCHLÜSSEL BEFINDET DURCH char] [LINES TER by DURCH char] [NULL DEFINED AS char]
SERDE-Serienname [WITH SERDEPROPERTIES (Eigenschaftsname = Eigenschaftswert, Eigenschaftsname = Eigenschaftswert, ...)]Dateiformat:: SEQUENCEFILE, TEXTFILE, RCFILE, ORC, PARQUET, AVRO, INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
CREATE (DATABASE | SCHEMA) [IF NOT EXISTS] Datenbankname [COMMENT Datenbankkommentar] [LOCATION hdfs_path] [WITH DBPROPERTIES (Eigenschaftsname = Eigenschaftswert, ...)];
Bemerkungen
Beim Arbeiten mit Tabellen und Datenbanken in HIVE. Nachfolgende Punkte können nützlich sein.
- Wir können die Datenbank mit
use database;
wechselnuse database;
Befehl - Um die aktuelle Arbeitsdatenbank kennen zu lernen, können Sie
SELECT current_database()
- Um die DDL
SHOW CREATE TABLE tablename
die für die Anweisung create table verwendet wird, können Sie den TabellennamenSHOW CREATE TABLE tablename
- Um alle Tabellenspalten
DESCRIBE tablename
, verwenden SieDESCRIBE tablename
, um erweiterte DetailsDESCRIBE FORMATTED tablename
. B. die verwendeten Standortserver und andere. DESCRIBE kann auch als DESC abgekürzt werden.
Tabelle erstellen
Eine verwaltete Tabelle mit Partition erstellen und als Sequenzdatei speichern. Es wird angenommen, dass das Datenformat in den Dateien durch Ctrl-A (^A)
feldbegrenzt und durch Zeilenumbruch getrennt wird. Die folgende Tabelle wird im Hive-Warehouse-Verzeichnis erstellt, das in value für den Schlüssel hive.metastore.warehouse.dir
in der Hive-Konfigurationsdatei hive-site.xml
.
CREATE TABLE view
(time INT,
id BIGINT,
url STRING,
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE;
Erstellen einer externen Tabelle mit Partitionen und als Sequenzdatei gespeichert. Es wird angenommen, dass das Datenformat in den Dateien durch ctrl-A
und durch Zeilenumbruch durch Zeilenumbrüche begrenzt wird. Die folgende Tabelle wird an dem angegebenen Ort erstellt und ist praktisch, wenn bereits Daten vorhanden sind. Die Verwendung einer externen Tabelle hat den Vorteil, dass wir die Tabelle löschen können, ohne die Daten zu löschen. Wenn wir zum Beispiel eine Tabelle erstellen und erkennen, dass das Schema falsch ist, können wir die Tabelle sicher löschen und mit dem neuen Schema neu erstellen, ohne sich um die Daten zu sorgen. Ein weiterer Vorteil besteht darin, dass wir andere Werkzeuge wie pig in denselben Dateien verwenden. Wir können sie auch nach dem Löschen der Tabelle weiter verwenden.
CREATE EXTERNAL TABLE view
(time INT,
id BIGINT,
url STRING,
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE
LOCATION '<hdfs_location>';
Erstellen Sie eine Tabelle mit select-Abfrage und füllen Sie die Ergebnisse aus der Abfrage aus. Diese Anweisungen werden als CTAS (Create Table As Select) bezeichnet .
CTAS besteht aus zwei Teilen: Der SELECT-Teil kann eine beliebige von HiveQL unterstützte SELECT-Anweisung sein. Der CREATE-Teil des CTAS entnimmt das resultierende Schema aus dem SELECT-Teil und erstellt die Zieltabelle mit anderen Tabelleneigenschaften wie SerDe und Speicherformat.
CTAS hat diese Einschränkungen:
- Die Zieltabelle kann keine partitionierte Tabelle sein.
- Die Zieltabelle kann keine externe Tabelle sein.
- Die Zieltabelle kann keine List-Bucketing-Tabelle sein.
CREATE TABLE new_key_value_store
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
STORED AS RCFile
AS
SELECT * FROM page_view
SORT BY url, add;
Tabelle erstellen wie:
Mit der LIKE-Form von CREATE TABLE können Sie eine vorhandene Tabellendefinition genau kopieren (ohne ihre Daten zu kopieren). Im Gegensatz zu CTAS erstellt die folgende Anweisung eine neue Tabelle, deren Definition in allen Details außer dem Tabellennamen genau mit der vorhandenen Tabelle übereinstimmt. Die neue Tabelle enthält keine Zeilen.
CREATE TABLE empty_page_views
LIKE page_views;
Datenbank erstellen
An einem bestimmten Ort eine Datenbank erstellen. Wenn wir keinen Speicherort für die Datenbank angeben, wird dies im Warehouse-Verzeichnis erstellt.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Hive ACID-Tabellenerstellung.
ACID-Tabellen werden seit Version 0.14 unterstützt. Die folgende Tabelle unterstützt UPDATE / DELETE / INSERT
Folgende Konfigurationsänderungen sind in hive-site.xml erforderlich.
hive.support.concurrency = true
hive.enforce.bucketing = true
hive.exec.dynamic.partition.mode = nonstrict
hive.txn.manager =org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on = true
hive.compactor.worker.threads = 1
Derzeit wird nur die orc-Datei unterstützt.
Tabelle zum Erstellen von Anweisungen
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
HIVE_HBASE-Integration
Die Hive-Hbase-Integration wird seit den folgenden Versionen unterstützt. Bienenstock: 0,11,0 HBase: 0,94,2 Hadoop: 0,20,2
CREATE TABLE hbase_hive
(id string,
col1 string,
col2 string,
col3 int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
("hbase.columns.mapping" = ":key,cf1:col1,cf1:col2,cf1:col3")
TBLPROPERTIES ("hbase.table.name" = "hive_hbase");
Hinweis: Die erste Spalte sollte die Schlüsselspalte sein.
Erstellen Sie eine Tabelle mit den vorhandenen Tabelleneigenschaften.
CREATE TABLE new_table_name LIKE existing_table_name;