hive
Maak een database- en tabeloverzicht
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 andereDESCRIBE 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;