Ricerca…


Sintassi

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [SE NON ESISTE] [nome_db.] Nome_tabella

    [(nome_colazione tipo_dati [COMMENTO col_commento], ...)] [COMMENTO_composito_commerciale] [PARTITIONED BY (nome_coli_dati tipo [COMMENTO col_commento], ...)] [CLUSTERED BY (nome_col, nome_colonna, ...) [ORDINATO DA ( nome_col [ASC | DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) - (Nota: disponibile in Hive 0.10.0 e versioni successive)] ON ((valore_casuale, valore_colore, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES] [[ROW FORMAT row_format] [STORED AS file_format] | MEMORIZZATO DA "storage.handler.class.name" [WITH SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
    [AS select_statement];

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [SE NON ESISTE] [nome_db.] Nome_tabella LIKE nome_tabella_esistente_ESTAZIONE [LOCATION hdfs_path];

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

  • primitive_type: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (precisione, scala), 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]] [ARTICOLI DELLA COLLEZIONE TERMINATI DA char] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] [NULL DEFINED AS char]
    , SERDE serde_name [WITH SERDEPROPERTIES (nome_proprietà = valore_proprietà, nome_proprietà = valore_proprietà, ...)]

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

  • CREATE (DATABASE | SCHEMA) [SE NON ESISTE] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name = property_value, ...)];

Osservazioni

Quando si lavora con tabelle e database in HIVE. Sotto i punti può essere utile.

  • Possiamo cambiare il database usando il use database; comando
  • Per conoscere il database di lavoro corrente possiamo usare SELECT current_database()
  • Per visualizzare il DDL utilizzato per creare la dichiarazione della tabella, è possibile utilizzare SHOW CREATE TABLE tablename
  • Per vedere tutte le colonne della tabella usa DESCRIBE tablename per mostrare dettagli estesi come il serde di posizione usato e altri DESCRIBE FORMATTED tablename . DESCRIBE può anche essere abbreviato come DESC.

Crea tabella

Creazione di una tabella gestita con partizione e memorizzata come un file di sequenza. Si presume che il formato dei dati nei file sia delimitato da Ctrl-A (^A) e delimitato da newline. La tabella seguente viene creata nella directory warehouse hive specificata nel valore per la chiave hive.metastore.warehouse.dir nel file di configurazione Hive 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;

Creazione di una tabella esterna con partizioni e memorizzata come un file di sequenza. Si presuppone che il formato dei dati nei file sia delimitato dal campo da ctrl-A e dalla riga delimitata da newline. La tabella seguente viene creata nella posizione specificata ed è utile quando disponiamo già di dati. Uno dei vantaggi dell'utilizzo di una tabella esterna è che possiamo eliminare la tabella senza eliminare i dati. Ad esempio, se creiamo una tabella e ci rendiamo conto che lo schema è sbagliato, possiamo tranquillamente abbandonare la tabella e ricrearla con il nuovo schema senza preoccuparci dei dati. Un altro vantaggio è che se usiamo altri strumenti come maiale sugli stessi file, possiamo continuare a usarli anche dopo aver eliminato la tabella.

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

Creando una tabella usando select query e popolando i risultati da query, queste istruzioni sono note come CTAS (Create Table As Select) .

Ci sono due parti in CTAS, la parte SELECT può essere qualsiasi istruzione SELECT supportata da HiveQL. La parte CREATE di CTAS acquisisce lo schema risultante dalla parte SELECT e crea la tabella di destinazione con altre proprietà della tabella come SerDe e il formato di archiviazione.

Il CTAS ha queste restrizioni:

  • La tabella di destinazione non può essere una tabella partizionata.
  • La tabella di destinazione non può essere una tabella esterna.
  • La tabella di destinazione non può essere una tabella di bucket di elenco.
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;

Crea una tabella simile a:

La forma LIKE di CREATE TABLE consente di copiare esattamente una definizione di tabella esistente (senza copiarne i dati). A differenza di CTAS, la seguente istruzione crea una nuova tabella la cui definizione corrisponde esattamente alla tabella esistente in tutti i particolari diversi dal nome della tabella. La nuova tabella non contiene righe.

CREATE TABLE empty_page_views
LIKE page_views;

Crea Database

Creazione di un database in una posizione particolare. Se non specifichiamo alcuna posizione per il database, è stata creata nella directory warehouse.

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

Creazione di tabelle ACID Hive.

Le tabelle ACID sono supportate dalla versione hive 0.14. La tabella sottostante supporta UPDATE / DELETE / INSERT

Sotto le modifiche alla configurazione richieste 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

Attualmente solo il file orc è supportato dal formato.

Tabella creare una dichiarazione.

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

Integrazione HIVE_HBASE

L'integrazione Hive-Hbase è supportata poiché le versioni successive. Hive: 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");

Nota: la prima colonna dovrebbe essere la colonna chiave.

Crea una tabella usando le proprietà della tabella esistenti.

CREATE TABLE new_table_name LIKE existing_table_name;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow