hive
Создание отчета о базе данных и таблицах
Поиск…
Синтаксис
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_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, ...) [SORTED BY ( col_name [ASC | DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) - (Примечание: доступно в Hive 0.10.0 и новее)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES] [[ROW FORMAT row_format] [STORED AS file_format] | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
[AS select_statement];CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] Имя_таблицы LIKE existing_table_or_view_name [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 (точность, масштаб), 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]] [КОЛЛЕКЦИОННЫЕ ПУНКТЫ, ПРЕКРАЩЕННЫЕ char] [КЛЮЧИ КАРТЫ, ПРЕКРАЩЕННЫМИ char] [ЛИНИИ, ПРЕКРАЩЕННЫЕ 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) [IF NOT EXISTS] имя_базы_комментария [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name = property_value, ...)];
замечания
При работе с таблицами и базами данных в HIVE. Ниже точки могут быть полезны.
- Мы можем переключать базу данных с
use database;
команда - Чтобы узнать текущую рабочую базу данных, мы можем использовать
SELECT current_database()
- Чтобы увидеть DDL, используемый для создания инструкции table, мы можем использовать
SHOW CREATE TABLE tablename
- Чтобы увидеть все столбцы таблицы, используйте
DESCRIBE tablename
чтобы показать расширенные данные, такие как location serde used и другиеDESCRIBE FORMATTED tablename
. DESCRIBE также может быть сокращен как DESC.
Создать таблицу
Создание управляемой таблицы с разделом и сохранение в виде файла последовательности. Предполагается, что формат данных в файлах разделен по полю с помощью Ctrl-A (^A)
и строки, разделенной символом новой строки. hive.metastore.warehouse.dir
таблица создается в каталоге хранилища хранилища, указанном в значении для ключа hive.metastore.warehouse.dir
в файле конфигурации 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;
Создание внешней таблицы с разделами и сохранение в виде файла последовательности. Формат данных в файлах считается разделенным по полю ctrl-A
и строковым разделителем по новой строке. Нижеследующая таблица создается в указанном месте и подходит, когда у нас уже есть данные. Одним из преимуществ использования внешней таблицы является то, что мы можем удалить таблицу без удаления данных. Например, если мы создаем таблицу и понимаем, что схема неверна, мы можем безопасно отказаться от таблицы и воссоздать ее с помощью новой схемы, не беспокоясь о данных. Другое преимущество заключается в том, что если мы используем другие инструменты, такие как свиньи в одних и тех же файлах, мы можем продолжать использовать их даже после удаления таблицы.
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>';
Создание таблицы с использованием запроса выбора и заполнения результатов запроса, эти операторы известны как CTAS (Create Table As Select) .
В CTAS есть две части: SELECT-часть может быть любой инструкцией SELECT, поддерживаемой HiveQL. Часть CREATE CTAS берет результирующую схему из части SELECT и создает целевую таблицу с другими свойствами таблицы, такими как SerDe и формат хранения.
CTAS имеет следующие ограничения:
- Целевая таблица не может быть секционированной таблицей.
- Целевая таблица не может быть внешней таблицей.
- Целевая таблица не может быть таблицей балансировки списка.
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;
Создать таблицу как:
Форма LIKE CREATE TABLE позволяет скопировать существующее определение таблицы точно (без копирования его данных). В отличие от CTAS, приведенная ниже инструкция создает новую таблицу, определение которой точно соответствует существующей таблице во всех деталях, отличных от имени таблицы. Новая таблица не содержит строк.
CREATE TABLE empty_page_views
LIKE page_views;
Создать базу данных
Создание базы данных в определенном месте. Если мы не укажем какое-либо место для базы данных, созданную в каталоге хранилища.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Создание таблицы ACID улья.
Таблицы ACID поддерживаются с версии улья 0.14. Ниже таблицы поддерживает UPDATE / DELETE / INSERT
Ниже изменений конфигурации требуется в 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
В настоящее время поддерживается только формат файла orc.
Оператор создания таблицы.
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
Интеграция HIVE_HBASE
Интеграция Hive-Hbase поддерживается с более низких версий. Улей: 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");
Примечание: 1-й столбец должен быть ключевым столбцом.
Создайте таблицу, используя существующие свойства таблицы.
CREATE TABLE new_table_name LIKE existing_table_name;