hive
Créer une déclaration de base de données et de table
Recherche…
Syntaxe
CREATE [TEMPORARY] [EXTERNAL] TABLE [SI PAS EXISTE] [nom_base.] Nom_table
[(nom_colonne type_données [COMMENT col_comment], ...)] [COMMENTER table_comment] [PARTITIONED BY (nom_colonne type_données [COMMENT col_comment], ...)] [CLUSTERED BY (nom_colonne, nom_colonne, ...) [SORTED BY ( nom_col [ASC | DESC], ...) INTO num_buckets BUCKETS] [SKEWED BY (nom_colonne, nom_colonne, ...) - (Remarque: Disponible dans Hive 0.10.0 et versions ultérieures)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STOCKÉ COMME RÉPERTOIRES] [[ROW FORMAT row_format] [STORED AS file_format] | STOCKÉ PAR 'storage.handler.class.name' [AVEC SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = value_value, ...)]
[AS select_statement];CREATE [TEMPORARY] [EXTERNAL] TABLE [SI N'EXISTE PAS] [nom_base.] Nom_table 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 (précision, échelle), DATE, VARCHAR, CHAR
array_type: ARRAY <data_type>
map_type: MAP <primitive_type, data_type>
struct_type: STRUCT <nom_colonne: type_données [commentaire col_comment], ...>
union_type: UNIONTYPE <data_type, data_type, ...>
row_format: DELIMITED [FIELDS TERMINATED BY char [Caractères ESCAPED BY]] [ELEMENTS DE COLLECTION TERMINES PAR char] [MAP KEYS TERMINATED BY char] [LIGNES TERMINÉES PAR char] [NULL DEFINED AS char]
, SERDE nom_de_serveur [AVEC SERDEPROPERTIES (nom_propriété = valeur_propriété, nom_propriété = valeur_propriété, ...)]format_fichier:: SEQUENCEFILE, TEXTFILE, RCFILE, ORC, PARQUET, AVRO, INPUTFORMAT nom_classe_format d'entrée OUTPUTFORMAT nom_classe_format
CREATE (DATABASE | SCHEMA) [IF NOT EXISTS] nom_de_base_de_données [COMMENT_commentation_base] [LOCATION hdfs_path] [WITH DBPROPERTIES (nom_propriété = valeur_propriété, ...)];
Remarques
Lorsque vous travaillez avec des tables et des bases de données dans HIVE. Les points ci-dessous peuvent être utiles.
- Nous pouvons changer de base de données en utilisant la
use database;
commander - Pour connaître la base de données de travail actuelle, nous pouvons utiliser
SELECT current_database()
- Pour voir la DDL utilisée pour l'instruction create table, nous pouvons utiliser
SHOW CREATE TABLE tablename
- Pour voir toutes les colonnes de la table, utilisez
DESCRIBE tablename
pour afficher des détails étendus tels que location serde used et autresDESCRIBE FORMATTED tablename
. DESCRIBE peut également être abrégé en DESC.
Créer une table
Création d'une table gérée avec partition et stockée en tant que fichier de séquence. Le format de données dans les fichiers est supposé être délimité par des champs par Ctrl-A (^A)
et délimité par des lignes sur newline. Le tableau ci-dessous est créé dans le répertoire de stockage de ruche spécifié en valeur pour la clé hive.metastore.warehouse.dir
dans le fichier de configuration 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;
Création d'une table externe avec des partitions et stockée en tant que fichier de séquence. Le format de données dans les fichiers est supposé être délimité par des champs par ctrl-A
et délimité par des lignes sur newline. Le tableau ci-dessous est créé à l'emplacement spécifié et il est pratique lorsque nous avons déjà des données. L'un des avantages de l'utilisation d'une table externe est que nous pouvons supprimer la table sans supprimer les données. Par exemple, si nous créons une table et réalisons que le schéma est faux, nous pouvons sans risque déposer la table et recréer avec le nouveau schéma sans nous soucier des données. Un autre avantage est que si nous utilisons d'autres outils comme nous pouvons continuer à les utiliser même après avoir supprimé la table.
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>';
En créant une table à l'aide de select query et en renseignant les résultats de la requête, ces instructions sont appelées CTAS (Create Table As Select) .
Il y a deux parties dans CTAS, la partie SELECT peut être n'importe quelle instruction SELECT prise en charge par HiveQL. La partie CREATE du CTAS prend le schéma résultant de la partie SELECT et crée la table cible avec d'autres propriétés de table telles que SerDe et le format de stockage.
CTAS a ces restrictions:
- La table cible ne peut pas être une table partitionnée.
- La table cible ne peut pas être une table externe.
- La table cible ne peut pas être une table de classement de liste.
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;
Créer un tableau comme:
La forme LIKE de CREATE TABLE vous permet de copier une définition de table existante exactement (sans copier ses données). Contrairement à CTAS, l'instruction ci-dessous crée une nouvelle table dont la définition correspond exactement à la table existante dans tous les détails autres que le nom de la table. La nouvelle table ne contient aucune ligne.
CREATE TABLE empty_page_views
LIKE page_views;
Créer une base de données
Créer une base de données dans un emplacement particulier. Si nous ne spécifions aucun emplacement pour la base de données, il est créé dans le répertoire du magasin.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Hive Création de table ACID.
Les tables ACID sont supportées depuis la version ruche 0.14. Le tableau ci-dessous prend en charge UPDATE / DELETE / INSERT
Les modifications de configuration ci-dessous sont requises dans 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
Actuellement, seul le fichier orc est pris en charge par le format.
Table create statement.
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
Intégration HIVE_HBASE
L'intégration Hive-Hbase est prise en charge depuis les versions inférieures. 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");
Remarque: la première colonne doit être la colonne clé.
Créez une table à l'aide des propriétés de table existantes.
CREATE TABLE new_table_name LIKE existing_table_name;