hive
Crea un database e una tabella
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 altriDESCRIBE 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;