hive
Skapa databas- och tabelldeklaration
Sök…
Syntax
CREATE [TEMPORARY] [EXTERNAL] TABELL [IF NOT EXISTS] [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, ...) [Sorterad av ( col_name [ASC | DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) - (Obs: Finns i Hive 0.10.0 och senare)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES] [[ROW FORMAT row_format] [STORED AS file_format] | LAGRAD AV 'storage.handler.class.name' [MED SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
[AS select_statement];CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] Table_name LIKE existens_table_or_view_name [LOCATION hdfs_path];
data_type: primitive_type, array_type, map_type, struct_type, union_type
primitiv typ: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DUBBEL, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (precision, skala), DATE, VARCHAR, CHAR
array_type: ARRAY <data_type>
map_type: MAP <primitive_type, data_type>
struct_type: STRUCT <col_name: data_type [COMMENT col_comment], ...>
union_type: UNIONTYPE <data_type, data_type, ...>
row_format: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] [NULL DEFINED AS char]
, SERDE serde_name [MED 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) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [MED DBPROPERTIES (property_name = property_value, ...)];
Anmärkningar
När du arbetar med tabeller och databaser i HIVE. Nedan kan punkter vara användbara.
- Vi kan byta databas med
use database;
kommando - För att känna till den nuvarande arbetsdatabasen kan vi använda
SELECT current_database()
- För att se DDL som används för att skapa tabellbeskrivning kan vi använda
SHOW CREATE TABLE tablename
- För att se alla kolumner i tabellen använder du
DESCRIBE tablename
att visa utökade detaljer som platsläge som används och andra.DESCRIBE FORMATTED tablename
. BESKRIVA kan också förkortas till DESC.
Skapa bord
Skapa en hanterad tabell med partition och lagras som en sekvensfil. Dataformatet i filerna antas vara fältavgränsat av Ctrl-A (^A)
och radavgränsat med ny linje. Tabellen nedan skapas i hive warehouse-katalog som anges i värdet för nyckeln hive.metastore.warehouse.dir
i Hive-konfigurationsfilen 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;
Skapa en extern tabell med partitioner och lagras som en sekvensfil. Dataformatet i filerna antas vara fältavgränsat av ctrl-A
och radavgränsat med ny linje. Tabellen nedan skapas på den angivna platsen och det är praktiskt när vi redan har data. En av fördelarna med att använda en extern tabell är att vi kan släppa tabellen utan att ta bort data. Om vi till exempel skapar en tabell och inser att schemat är fel, kan vi säkert släppa tabellen och återskapa med det nya schemat utan att oroa oss för dataen. En annan fördel är att om vi använder andra verktyg som gris på samma filer, Vi kan fortsätta använda dem även efter att vi har tagit bort tabellen.
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>';
Skapa en tabell med utvalda frågor och fylla resultat från frågan, dessa uttalanden kallas CTAS (Skapa tabell som valt) .
Det finns två delar i CTAS, SELECT-delen kan vara valfritt SELECT-uttalande som stöds av HiveQL. CREATE-delen av CTAS tar det resulterande schemat från SELECT-delen och skapar måltabellen med andra tabellegenskaper såsom SerDe och lagringsformat.
CTAS har dessa begränsningar:
- Måltabellen kan inte vara en partitionerad tabell.
- Måltabellen kan inte vara en extern tabell.
- Måltabellen kan inte vara en listbockningstabell.
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;
Skapa tabell som:
LIKE-formen av SKAPA TABELL gör att du kan kopiera en befintlig tabelldefinition exakt (utan att kopiera dess data). Till skillnad från CTAS skapar uttalandet nedan en ny tabell vars definition exakt matchar den befintliga tabellen i alla andra uppgifter än tabellnamn. Den nya tabellen innehåller inga rader.
CREATE TABLE empty_page_views
LIKE page_views;
Skapa databas
Skapa en databas på en viss plats. Om vi inte anger någon plats för databasen som skapas i lagerkatalogen.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Hive ACID-tabell skapande.
ACID-tabeller stöds sedan hive 0.14-versionen. Nedanstående tabell stöder UPDATE / DELETE / INSERT
Nedan konfigurationsändringar som krävs i 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
För närvarande stöds endast orc-fil.
Tabell skapa uttalande.
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
Hive-Hbase-integration stöds sedan versionerna nedan. Hive: 0,11,0 HBas: 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");
Obs: 1: a kolumnen ska vara nyckelkolumnen.
Skapa tabell med befintliga tabellegenskaper.
CREATE TABLE new_table_name LIKE existing_table_name;