1. 程式人生 > >Hive中對資料庫,表的操作

Hive中對資料庫,表的操作

在應用Hive之前,首先搭建Hive環境,關於Hive的搭建 參考之前的搭建文件

Hive官方應用文件

資料定義語言 DDL

這裡寫圖片描述

1、Create Database

Hive中資料庫的建立和關係型資料庫類似,用create datebase建立

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name  

hive 中的操作

hive> create database hive  

這裡寫圖片描述

2、Drop Database

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

3、Alter Database

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...)

4、Use Database

USE database_name;
USE DEFAULT;    

Create/Drop/Truncate Table

Hive中建立表,和關係型資料庫中的建立表類似,Hive中表的欄位應該和原始檔案中的格式一致,原始檔案存在HSFS上

1、create table

create table t_emp(
id int,
name string,
age int
, dept_name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

備註:FIELDS TERMINATED BY ‘,’ 表示原始檔案中的格式使用 ‘,’ 隔開的

測試 建立一個emp_data檔案,匯入t_emp表中

這裡寫圖片描述

Hive資料的匯入

Hive不做任何轉換,資料載入到表中。載入操作目前純複製/移動操作,實際上進入Hive位置對應表。

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...
)]

備註:[LOCAL] 本地檔案,’filepath’ 路徑

測試資料匯入表t_emp中

load data local inpath '/root/emp_data' into table t_emp;

這裡寫圖片描述

這時候我們檢視Hadoop HDFS 的工作目錄發現自動生成t_emp檔案

/user/hive/warehouse/t_emp,Hive匯入資料到t_emp表,(hadoop 環境變數)自動找到Hadoop HDFS 工作目錄並且建立了工作目錄

這裡寫圖片描述

執行 select 語句查詢統計

hive> select count(*) from t_emp where dept_name = '銷售部' group by dept_name;

Hadoop job information Mapreduce 執行結果

這裡寫圖片描述

資料操作語言 DML

1、檔案載入到表(本地匯入)

Hive不做任何轉換,資料載入到表中。載入操作目前純複製/移動操作,實際上進入Hive位置對應表

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
  • Hive從某個表匯出到HDFS指定路徑
export table t_emp to '/usr/input/emp.txt';

2、插入資料到Hive表中

CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3, 2))
  CLUSTERED BY (age) INTO 2 BUCKETS STORED AS ORC;

INSERT INTO TABLE students
  VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);

3、更新Hive表資料

UPDATE tablename SET column = value [, column = value ...] [WHERE expression]

4、刪除Hive表資料

DELETE FROM tablename [WHERE expression]

5、查詢插入Hive資料表dept_count (無分割槽)

create table dept_count(
    dname string,
    num int
);


insert into table dept_count select dept_name,count(1) from t_emp group by dept_name;  

6、查詢插入Hive資料表dept_count (有分割槽)

create table dept_count_1(
    num int
) partitioned by (dname string);


insert into table dept_count_1 partition (dname = '銷售部') select count(*) from t_emp where dept_name = '銷售部' group by dept_name;

詳細 見官方文件