1. 程式人生 > >認識Hive-資料的匯入匯出

認識Hive-資料的匯入匯出

什麼是Hive

  • 把SQL語句轉換成map-reduce任務,並完成資料封裝【直譯器、編譯器、優化器】Hive是大資料生態系統中的資料倉庫。

Hive架構

  • Hive就是大資料中的資料倉庫,擅長處理格式良好的結構化資料。對非結構化並不適合;
  • Hive能夠把結構良好的資料檔案對映成一張關係資料庫的表,並提供類似SQL(HQL)的查詢功能;
  • Hive會把SQL語句轉換成MapReduce任務執行;
  • 提供ETL的工具;
  • Hive執行時,元資料儲存在關係型資料庫中。

優缺點

  • 成本低,入手快
  • 不需要學習MapReduce開發
  • 不支援實時查詢

Hive vs RDBMS

比較項 SQL HiveQL
ANSI SQL 支援 不完全支援
更新 UPDATE\INSTERT\DELETE insert OVERWRITE\INTO TABLE
事物 支援 不支援
模式 寫模式 讀模式
資料儲存 塊裝置,本地檔案系統 HDFS
延時
多表插入 不支援 支援
子查詢 完全支援 只能用在Form子句中
檢視 Updatable Read-only
可擴充套件性
資料規模
…… …… ……

資料型別

  • 原子資料型別(常規資料型別)
  • 複雜資料型別
    • ARRAY
    • MAP
    • STRUCT

  • 託管表(managed table)(內部表)
  • 外部表

簡單示例

  • 登入Hive
su hdfs
hive

在這裡插入圖片描述

  • 檢視資料庫
show databases;

在這裡插入圖片描述

  • 建立資料庫
create database if not exists databasename;

在這裡插入圖片描述

資料匯入

  • root使用者在/home/hdfs/tgm/目錄下建立user.txt檔案
cat user.txt
1,abc,25,13188888888888
2,test,30,13888888888888
3,adsfsadf,34,899314121

在這裡插入圖片描述

  • 在hive中建立資料表
create table tgm_test
(id int, 
name string,
age string,
tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

在這裡插入圖片描述

  • 從本地檔案載入
load data local inpath '/home/hdfs/tgm/user.txt' into table tgm_test;

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

  • 從HDFS中檔案載入
load data inpath 'user.txt' into table tgm_test;
  • 從Hive中另一個表中載入
create table tgm_test2
(id int,
name string,
tel string)
partitioned by (age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

在這裡插入圖片描述

insert into table tgm_test2
partition (age='25')
select id, name, tel
from tgm_test;

在這裡插入圖片描述

資料匯出

  • 匯出到本地
insert overwrite local directory '/tmp/test'
select * from tgm_test;
  • 匯出到HDFS
insert overwrite directory '/tmp/test'
select * from tgm_test;
  • 匯出時指定分隔符
insert overwrite local  directory '/tmp/test'
row format delimited
fields terminated by ','
select * from tgm_test;