hive
Utwórz instrukcję bazy danych i tabeli
Szukaj…
Składnia
UTWÓRZ [CZASOWO] [ZEWNĘTRZNY] TABELA [JEŚLI NIE ISTNIEJE] [nazwa_bazy.] Nazwa_tabeli
[(nazwa_kolumny typ_danych [KOMENTARZ_kolumna], ...)] [KOMENTARZ_tabela] [PARTYCJONOWANY PRZEZ (nazwa_kolii typ_danych [KOMENTARZ_kolumna], ...)] [KLASTROWANY PRZEZ (nazwa_kolumny, nazwa_kolumny, ...) [SORTOWANE PRZEZ ( nazwa_kolumny [ASC | DESC], ...)] NA Wiadra num_buckets] [SKEWED BY (nazwa_kolumny, nazwa_kolumny, ...) - (Uwaga: Dostępne w gałęzi 0.10.0 i nowszych)] WŁĄCZONY ((wartość_kolejki, wartość_kolumny, ...), (wartość_kolumny, wartość_kolumny, ...), ...) [STORED AS DIRECTORIES] [[ROW FORMAT row_format] [STORED AS file_format] | PRZECHOWYWANE PRZEZ „storage.handler.class.name” [Z SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (nazwa_właściwości = wartość_właściwości, ...)]
[AS select_statement];UTWÓRZ [TYMCZASOWY] [ZEWNĘTRZNY] TABELA [JEŚLI NIE ISTNIEJE] [nazwa_bazy.] Nazwa_tabeli PODOBNE istniejąca_tabela_lub_nazwa_widoku [LOKALIZACJA ścieżka_hdfs];
typ danych: typ pierwotny, typ tablicowy, typ mapowy, typ strukturalny, typ uniowy
primitive_type: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (precyzja, skala), DATA, VARCHAR, CHAR
array_type: ARRAY <typ_danych>
map_type: MAP <typ pierwotny, typ danych>
struct_type: STRUCT <nazwa_kolumny: typ_ danych [KOMENTARZ_kolekcja], ...>
typ_zjednoczenia: UNIONTYPE <typ_danych, typ_danych, ...>
row_format: DELIMITED [POLA ZAKOŃCZONE PRZEZ char [ESCAPED BY char]] [POZYCJE KOLEKCJI ZAKOŃCZONE PRZEZ char] [KLUCZE MAPY ZAKOŃCZONE PRZEZ char] [LINIE ZAKOŃCZONE PRZEZ char] [NULL ZDEFINIOWANE JAK char]
, SERDE_nazwa_serde [Z SERDEPROPERTIES (nazwa_właściwości = wartość_właściwości, nazwa_właściwości = wartość_właściwości, ...)]format_pliku:: SEQUENCEFILE, TEXTFILE, RCFILE, ORC, PARQUET, AVRO, INPUTFORMAT nazwa_formatu_format_wejściowej OUTPUTFORMAT nazwa_formatu_format_wyjściowego
UTWÓRZ (BAZY DANYCH | SCHEMA) [JEŚLI NIE ISTNIEJE] nazwa_bazy_danych [KOMENTARZ komenda_bazy_danych] [LOKALIZACJA ścieżka_hdfs] [Z DBPROPERTIES (nazwa_właściwości = wartość_właściwości, ...)];
Uwagi
Podczas pracy z tabelami i bazami danych w HIVE. Przydatne mogą być poniższe punkty.
- Możemy przełączyć bazę danych, używając
use database;
Komenda - Aby poznać bieżącą działającą bazę danych, możemy uzyskać za pomocą
SELECT current_database()
- Aby zobaczyć DDL użytego do utworzenia instrukcji table, możemy użyć
SHOW CREATE TABLE tablename
- Aby zobaczyć wszystkie kolumny tabeli, użyj
DESCRIBE tablename
aby wyświetlić rozszerzone szczegóły, takie jak użyta nazwa lokalizacji i inneDESCRIBE FORMATTED tablename
. DESCRIBE można również skracać jako DESC.
Utwórz tabelę
Tworzenie tabeli zarządzanej z partycją i przechowywaną jako plik sekwencji. Zakłada się, że format danych w plikach jest rozdzielany polami przez Ctrl-A (^A)
i rozdzielany wierszami przez nowy wiersz. Poniższa tabela jest tworzona w katalogu magazynu gałęzi określonym w wartości klucza hive.metastore.warehouse.dir
w pliku konfiguracyjnym 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;
Tworzenie tabeli zewnętrznej z partycjami i przechowywanej jako plik sekwencji. Zakłada się, że format danych w plikach jest rozdzielany polami przez ctrl-A
i ograniczany przez wiersze znakiem nowej linii. Poniższa tabela jest tworzona w określonej lokalizacji i jest przydatna, gdy mamy już dane. Jedną z zalet korzystania z tabeli zewnętrznej jest to, że możemy upuścić tabelę bez usuwania danych. Na przykład, jeśli utworzymy tabelę i zauważymy, że schemat jest nieprawidłowy, możemy bezpiecznie upuścić tabelę i odtworzyć ją przy użyciu nowego schematu, nie martwiąc się o dane. Inną zaletą jest to, że jeśli używamy innych narzędzi, takich jak świnia, w tych samych plikach, możemy nadal z nich korzystać, nawet po usunięciu tabeli.
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>';
Tworząc tabelę przy użyciu wyboru zapytania i wypełniając wyniki z zapytania, instrukcje te są znane jako CTAS (Utwórz tabelę jako wybrane) .
CTAS składa się z dwóch części, część SELECT może być dowolną instrukcją SELECT obsługiwaną przez HiveQL. Część CREATE CTAS pobiera wynikowy schemat z części SELECT i tworzy tabelę docelową z innymi właściwościami tabeli, takimi jak SerDe i format pamięci.
CTAS ma następujące ograniczenia:
- Tabela docelowa nie może być tabelą podzieloną na partycje.
- Tabela docelowa nie może być tabelą zewnętrzną.
- Tabela docelowa nie może być tabelą zestawienia list.
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;
Utwórz tabelę jak:
PODOBNA forma CREATE TABLE pozwala dokładnie skopiować istniejącą definicję tabeli (bez kopiowania jej danych). W przeciwieństwie do CTAS poniższe oświadczenie tworzy nową tabelę, której definicja dokładnie pasuje do istniejącej tabeli we wszystkich szczegółach innych niż nazwa tabeli. Nowa tabela nie zawiera wierszy.
CREATE TABLE empty_page_views
LIKE page_views;
Utwórz bazę danych
Tworzenie bazy danych w określonej lokalizacji. Jeśli nie określimy żadnej lokalizacji bazy danych, zostanie ona utworzona w katalogu hurtowni.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Tworzenie tabeli ACive gałęzi.
Tabele ACID są obsługiwane od wersji gałęzi 0.14. Poniższa tabela obsługuje UPDATE / DELETE / INSERT
Poniżej wymagane zmiany konfiguracji w 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
Obecnie obsługiwany jest tylko format orc.
Instrukcja tworzenia tabeli.
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
Integracja HIVE_HBASE
Integracja Hive-Hbase jest obsługiwana od wersji poniżej. 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");
Uwaga: 1. kolumna powinna być kolumną kluczową.
Utwórz tabelę przy użyciu istniejących właściwości tabeli.
CREATE TABLE new_table_name LIKE existing_table_name;