Zoeken…


Syntaxis

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [INDIEN BESTAAT NIET] [db_name.] Table_name

    [(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, ...) [GESORTEERD DOOR ( col_name [ASC | DESC], ...)] IN num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) - (Opmerking: beschikbaar in component 0.10.0 en later)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [OPGESLAGEN ALS DIRECTORIES] [[ROW FORMAT row_format] [STORED AS file_format] | OPGESLAGEN DOOR 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
    [AS select_statement];

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [INDIEN BESTAAT NIET] [db_name.] Tabelnaam ALS bestaande_table_or_view_name [LOCATION hdfs_path];

  • data_type: primitive_type, array_type, map_type, struct_type, union_type

  • primitief type: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (precisie, schaal), DATUM, VARCHAR, CHAR

  • array_type: ARRAY <gegevenstype>

  • map_type: MAP <primitief_type, data_type>

  • struct_type: STRUCT <col_name: data_type [COMMENT col_comment], ...>

  • union_type: UNIONTYPE <data_type, data_type, ...>

  • row_format: DELIMITED [VELDEN BEËINDIGD DOOR char [ESCAPED BY char]] [COLLECTIE-ARTIKELEN BEËINDIGD DOOR char] [KAARTTOETSEN BEËINDIGD DOOR char] [LIJNEN BEËINDIGD DOOR char] [NULL DEFINED AS char]
    , SERDE serde_name [WITH SERDEPROPERTIES (property_name = property_value, property_name = property_value, ...)]

  • file_format:: SEQUENCEFILE, TEXTFILE, RCFILE, ORC, PARQUET, AVRO, INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

  • CREATE (DATABASE | SCHEMA) [INDIEN BESTAAT NIET] database_naam [COMMENT database_comment] [LOCATION hdfs_path] [MET DBPROPERTIES (property_name = property_value, ...)];

Opmerkingen

Bij het werken met tabellen en databases in HIVE. Onderstaande punten kunnen nuttig zijn.

  • We kunnen van database wisselen met use database; commando
  • Om de huidige werkende database te leren kennen, kunnen we SELECT current_database()
  • Om de DDL te zien die wordt gebruikt voor het maken van een tabelinstructie, kunnen we de SHOW CREATE TABLE tablename
  • Om alle kolommen van de tabel te zien, gebruikt u de DESCRIBE tablename om uitgebreide details weer te geven, zoals de gebruikte locatie-serde en andere DESCRIBE FORMATTED tablename . DESCRIBE kan ook worden afgekort als DESC.

Maak een tabel

Een beheerde tabel met partitie maken en opslaan als een reeksbestand. Het gegevensformaat in de bestanden wordt verondersteld door het veld gescheiden te zijn door Ctrl-A (^A) en door rijen gescheiden door een nieuwe regel. De onderstaande tabel is gemaakt in de bijenkorfmagazijnmap die is opgegeven in waarde voor de sleutel hive.metastore.warehouse.dir in het bijenkorfconfiguratiebestand 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;

Een externe tabel met partities maken en opgeslagen als een reeksbestand. Het gegevensformaat in de bestanden wordt verondersteld door het veld gescheiden te zijn door ctrl-A en door rijen gescheiden door newline. De onderstaande tabel is gemaakt op de opgegeven locatie en is handig wanneer we al gegevens hebben. Een van de voordelen van het gebruik van een externe tabel is dat we de tabel kunnen verwijderen zonder de gegevens te verwijderen. Als we bijvoorbeeld een tabel maken en ons realiseren dat het schema fout is, kunnen we de tabel veilig laten vallen en opnieuw maken met het nieuwe schema zonder ons zorgen te maken over de gegevens. we kunnen ze blijven gebruiken, zelfs nadat we de tabel hebben verwijderd.

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

Als u een tabel maakt met behulp van een selectiequery en de resultaten van een query invult , worden deze instructies CTAS (Create Table As Select) genoemd .

CTAS bestaat uit twee delen, het SELECT-deel kan elke SELECT-instructie zijn die wordt ondersteund door HiveQL. Het CREATE-gedeelte van de CTAS neemt het resulterende schema van het SELECT-gedeelte en maakt de doeltabel met andere tabeleigenschappen zoals het SerDe- en opslagformaat.

CTAS heeft deze beperkingen:

  • De doeltabel kan geen gepartitioneerde tabel zijn.
  • De doeltabel kan geen externe tabel zijn.
  • De doeltabel kan geen lijst met lijsten zijn.
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;

Maak een tabel als:

Met de LIKE-vorm van CREATE TABLE kunt u een bestaande tabeldefinitie exact kopiëren (zonder de gegevens te kopiëren). In tegenstelling tot CTAS maakt de onderstaande instructie een nieuwe tabel waarvan de definitie exact overeenkomt met de bestaande tabel in alle bijzonderheden behalve de tabelnaam. De nieuwe tabel bevat geen rijen.

CREATE TABLE empty_page_views
LIKE page_views;

Maak een database

Een database op een bepaalde locatie maken. Als we geen locatie opgeven voor de database, wordt deze gemaakt in de magazijnmap.

CREATE DATABASE IF NOT EXISTS db_name 
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;

Hive ACID-tabel maken.

ZUUR tabellen worden ondersteund sinds component 0.14. Onderstaande tabel ondersteunt UPDATE / DELETE / INSERT

Onderstaande configuratiewijzigingen vereist in hive-site.xml.

 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

Momenteel wordt alleen het orc-bestand ondersteund door de indeling.

Tabel maken statement.

 create table Sample_Table(
 col1 Int,
 col2 String,
 col3 String) 
 clustered by (col3) into 3 buckets 
 stored as orc 
 TBLPROPERTIES ('transactional'='true');

HIVE_HBASE Integratie

Hive-Hbase-integratie wordt ondersteund sinds onderstaande versies. Bijenkorf: 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");

Opmerking: de 1e kolom moet de sleutelkolom zijn.

Maak een tabel met behulp van bestaande tabeleigenschappen.

CREATE TABLE new_table_name LIKE existing_table_name;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow