Directorio de artículos
- Crear una nueva tabla de datos empleados
- Cargar datos en la tabla
- Elementos de referencia en un tipo de colección
- Nueva tabla de datos de existencias
- Cargar datos
- manipulación de datos DML
Crear una nueva tabla de datos empleados
create table employees(
name string,
salary float,
subordinates array<string>,
deductions map<string,float>,
address struct<street:string,city:string,state:string,zip:int>
)
partitioned by (country string,state string);
Cargar datos en la tabla
load data local inpath '/opt/datafiles/employees.txt' overwrite into table employees partition (country='US',state='CA');
partition子句分区表,用户必须为每个分区的键指定一个值。
数据将会存放到这个文件夹
/user/hive/warehouse/learnhive.db/employees/country=US/state=CA
select name,salary from employees;
+-------------------+-----------+
| name | salary |
+-------------------+-----------+
| John Doe | 100000.0 |
| Mary Smith | 80000.0 |
| Todd Jones | 70000.0 |
| Bill King | 60000.0 |
| Boss Man | 200000.0 |
| Fred Finance | 150000.0 |
| Stacy Accountant | 60000.0 |
+-------------------+-----------+
Cuando la columna seleccionada por el usuario es un tipo de datos de colección, Hive aplica la sintaxis JSON a la salida. Los subordinados se enumeran como una matriz. Nota: los elementos de cadena de la colección se citan, mientras que los valores de columna de la cadena de tipo de datos básicos no se citan.
select name,subordinates from employees;
La columna de deducciones es un MAP
select name,deductions from employees;
La columna de dirección es una estructura.
select name,address from employees;
Elementos de referencia en un tipo de colección
Matriz de referencia (seleccione el segundo elemento de los subordinados de la matriz)
select name,subordinates[1] from employees;
Hacer referencia a un elemento inexistente devolverá NULL. Al mismo tiempo, el valor del tipo de datos de cadena extraído no se cita
Elemento MAP de referencia
select name,deductions['Insurance'] from employees;
elemento de estructura de referencia
select name,address.city from employees;
Nueva tabla de datos de existencias
create table stocks(
exchange_e string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float)
row format delimited fields terminated by ',';
Cargar datos
load data local inpath '/opt/datafiles/stocks.csv' overwrite into table stocks;
Use expresiones regulares para especificar columnas
Primero tienes que ejecutar esta declaración.
set hive.support.quoted.identifiers=none;
select symbol,`price.*` from stocks limit 5;
Calcular usando valores de columna
select upper(name),salary,deductions["Federal Taxes"],round(salary*(1-deductions["Federal Taxes"])) from employees;
operador aritmético
+,加
-,减
*,乘
/,除
%,求余
&,按位取与
|,按位取或
^,按位取亦或
~,按位取反
declaración de límite
select name,salary from employees limit 2;
select name,salary from employees limit 1,2;
查询从第1列开始,返回2列
alias de columna
select name as n,salary from employees;
manipulación de datos DML
importación de datos
carga
load data [local] inpath '数据的path' [overwrite] into table student [partition (partcol1=val1,…)];
(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
insertar
insert into或overwrite table student_par values(1,'wangwu'),(2,'zhaoliu');
insert into:以追加数据的方式插入到表或分区,原有数据不会删除
insert overwrite:会覆盖表中已存在的数据
insert overwrite table student_par select id, name from student ;
(根据单张表查询结果插入)
Crear tablas basadas en los resultados de la consulta
create table if not exists student3 as select id, name from student;
Especifique la ruta de carga de datos a través de la ubicación al crear una tabla
create external table if not exists student5(
id int, name string
)
row format delimited fields terminated by '\t'
location '/student;
Salida de datos
Insertar exportación
1) Exportar los resultados de la consulta al local
insert overwrite local directory '/opt/outfiles' select * from employees;
2) Formatee y exporte los resultados de la consulta al local
insert overwrite local directory '/opt/outfiles'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from employees;
3) Exportar los resultados de la consulta a HDFS (no local)
insert overwrite directory '/opt/outfiles'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from employees;
Exportar comandos de Hadoop a local
dfs -get /user/hive/warehouse/learnhive.db/test2/test.txt /opt/outfiles/out_test.txt;
Exportación de comandos de Hive Shell
[xwk@hadoop102 outfiles]$ cd /opt/software/hive/
[xwk@hadoop102 hive]$ ./bin/hive -e 'select * from learnhive.test2;' > /opt/outfiles/out_test01.txt;
Exportar a HDFS
la exportación y la importación se utilizan principalmente para la migración de tablas de Hive entre dos clústeres de plataforma de Hadoop.
export table learnhive.test2 to '/opt/outfiles';
Importar datos a la tabla de Hive especificada
Nota: Utilice exportar para exportar primero y luego importar los datos.
borrar datos primero
import table test2 from '/opt/outfiles';
Borrar los datos de la tabla (Truncar)
Nota: Truncar solo puede eliminar la tabla de gestión, no los datos de la tabla externa
truncate table test2;
select * from test2;
+-------------+----------------+-----------------+----------------+
| test2.name | test2.friends | test2.children | test2.address |
+-------------+----------------+-----------------+----------------+
+-------------+----------------+-----------------+----------------+