hive
Crear base de datos y declaración de tabla
Buscar..
Sintaxis
CREAR [TEMPORAL] [EXTERNO] TABLA [SI NO EXISTE] [db_name.] Table_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, ...) - (Nota: Disponible en Hive 0.10.0 y posterior)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [ALMACENADO COMO DIRECTORIOS] [[FORMATO DE FILA row_format] [STORED AS file_format] | ALMACENADO POR 'storage.handler.class.name' [CON SERDEPROPERTIES (...)]] [LOCATION hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]
[AS select_statement];CREAR LA TABLA [TEMPORAL] [EXTERNA] [SI NO EXISTE] [nombre_bd.] Nombre_tabla LIKE existing_table_or_view_name [LOCATION hdfs_path];
data_type: primitive_type, array_type, map_type, struct_type, union_type
tipo primitivo: TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOTADOR, DOBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (precisión, escala), 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 [CAMPOS TERMINADOS POR char [ESCAPED BY char]] [COLECCIÓN ARTÍCULOS TERMINADOS POR char] [MAP KEYS TERMINATED BY char] [LÍNEAS TERMINADAS POR char] [NULL DEFINED AS char]
, SERDE serde_name [CON 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) [SI NO EXISTE] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name = property_value, ...)];
Observaciones
Cuando se trabaja con tablas y bases de datos en HIVE. Los siguientes puntos pueden ser útiles.
- Podemos cambiar la base de datos utilizando la
use database;
mando - Para conocer la base de datos de trabajo actual podemos obtener utilizando
SELECT current_database()
- Para ver el DDL utilizado para crear una declaración de tabla, podemos usar
SHOW CREATE TABLE tablename
- Para ver todas las columnas de la tabla, utilice
DESCRIBE tablename
para mostrar detalles extendidos, como la ubicación que se usa y otrosDESCRIBE FORMATTED tablename
. DESCRIBIR también se puede abreviar como DESC.
Crear mesa
Creación de una tabla administrada con partición y almacenada como un archivo de secuencia. Se asume que el formato de datos en los archivos está delimitado por el campo por Ctrl-A (^A)
y por la línea nueva delimitado por filas. La siguiente tabla se crea en el directorio del almacén de Hive especificado en valor para la clave hive.metastore.warehouse.dir
en el archivo de configuración de 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;
Creación de una tabla externa con particiones y almacenada como un archivo de secuencia. Se supone que el formato de datos en los archivos está delimitado por el campo por ctrl-A
y por la línea nueva delimitado por filas. La siguiente tabla se crea en la ubicación especificada y es útil cuando ya tenemos datos. Una de las ventajas de usar una tabla externa es que podemos eliminar la tabla sin eliminar los datos. Por ejemplo, si creamos una tabla y nos damos cuenta de que el esquema es incorrecto, podemos dejar la tabla de forma segura y recrear con el nuevo esquema sin preocuparnos por los datos. Otra ventaja es que si estamos usando otras herramientas como pig en los mismos archivos, Podemos seguir usándolos incluso después de eliminar la tabla.
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>';
Al crear una tabla utilizando la consulta de selección y rellenando los resultados de la consulta, estas declaraciones se conocen como CTAS (Crear tabla como selección) .
Hay dos partes en CTAS, la parte SELECT puede ser cualquier instrucción SELECT admitida por HiveQL. La parte CREAR del CTAS toma el esquema resultante de la parte SELECCIONAR y crea la tabla de destino con otras propiedades de la tabla como el SerDe y el formato de almacenamiento.
CTAS tiene estas restricciones:
- La tabla de destino no puede ser una tabla particionada.
- La tabla de destino no puede ser una tabla externa.
- La tabla de destino no puede ser una tabla de agrupación de listas.
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;
Crear tabla como:
La forma LIKE de CREATE TABLE le permite copiar una definición de tabla existente exactamente (sin copiar sus datos). A diferencia de CTAS, la siguiente declaración crea una nueva tabla cuya definición coincide exactamente con la tabla existente en todos los detalles, excepto el nombre de la tabla. La nueva tabla no contiene filas.
CREATE TABLE empty_page_views
LIKE page_views;
Crear base de datos
Creación de una base de datos en una ubicación particular. Si no especificamos ninguna ubicación para la base de datos, se creará en el directorio del almacén.
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
Creación de tablas Hive ACID.
Las tablas ACID son compatibles desde la versión hive 0.14. Debajo de la tabla es compatible con ACTUALIZAR / BORRAR / INSERTAR
Debajo de los cambios de configuración requeridos en 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
Actualmente solo el archivo orc es compatible con el formato.
Tabla de crear declaración.
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
Integración HIVE_HBASE
La integración Hive-Hbase es compatible desde las versiones inferiores. Colmena: 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 primera columna debe ser la columna clave.
Crear tabla utilizando las propiedades de tabla existentes.
CREATE TABLE new_table_name LIKE existing_table_name;