Hive 基本操作 總結

2021-09-24 04:55:42 字數 2740 閱讀 3442

使用hive之前要做的操作

(1) 啟動dfs

linux命令:# start-dfs.sh

(2) 啟動yarn

linux命令:# start-yarn.sh

(3)進入hive

linux命令:# hive

如下圖所示:

建立表

create table t_order(id int, name string, rongliang string, price double)

row format delimited #表明一行是一條記錄

fields terminated by 『\t』#表示欄位間用tab隔開

stored as sequencefile; #可以儲存為二進位制檔案也可以儲存為普通文字檔案,不寫的話預設是普通的文字

向表中匯入資料

load data local inpath 『/usr/local/hadoop/hivedata/***.txt』 into table t_order;

查詢表中所有資料

select * from t_order;

建立外部表

create external table stubak (id int, name string)

row format delimited

fields terminated by 『\t』

location 『/stubak』;#指定外部錶用的資料所在位置

內部表 && 外部表

無external修飾的是內部表(managed table),被external修飾的為外部表(external table);

區別:

(1)內部表資料由hive自身管理;外部表資料由hdfs管理。

(2)內部表資料儲存的位置是hive.metastore.warehouse.dir(預設:/user/hive/warehouse);外部表資料的儲存位置由自己制定。

(3)刪除內部表會直接刪除元資料(metadata)及儲存資料;刪除外部表僅僅會刪除元資料,hdfs上的檔案並不會被刪除;

(4)對內部表的修改會將修改直接同步給元資料,而對外部表的表結構和分割槽進行修改,則需要修復(msck repair table table_name;)

建立分割槽表

普通表和分割槽表區別:有大量資料增加的需要建分割槽表

create table book (id bigint, name string)

partitioned by (pubdate string)

row format delimited

fields terminated by 『\t』;

根據select語句建表結構,並且裡面有資料(經常作為中間表來用)

create table tab_ip_ctas

asselect id new_id, name new_name, ip new_ip,country new_country

from tab_ip_ext

sort by new_id;

通過select語句批量插入資料到別的表

insert overwrite table tab_ip_like

select * from tab_ip;

將查詢結果寫入到指定的路徑中

insert overwrite local directory 『/home/hadoop/hivetemp/test.txt』 select *

from tab_ip_part where part_flag=『part1』;

array型別表

create table tab_array(a array,b array)

row format delimited

fields terminated by 『\t』#欄位間用『\t』分隔

collection items terminated by 『,』;#陣列內容用逗號分隔

map型別表

create table tab_map(name string,info map)

row format delimited

fields terminated by 『\t』

collection items terminated by 『,』

map keys terminated by 『:』;#map中的鍵和健值用:分隔

通過shell執行hive的批量hql語句(類似於sql裡面的儲存過程)

hive -s -e 『select country,count(*) from tab_ext』 > /home/hadoop/hivetemp/e.txt

select * from tab_ext sort by id desc limit 5;

select a.ip,b.book from tab_ext a join tab_ip_book b on(a.name=b.name);

hive基本總結

1,hive支援的型別 tinyint tinyint型別 smallint smallint型別 int int型別 bigint bigint型別 主要用於狀態,類別,數量的字段 boolean boolean型別 float float型別 double double型別 主要用於金額的字段 ...

hive基本操作

1.顯示所有資料庫 show databases 2.使用某個資料庫 use xx xx表示某個資料庫名 3.顯示某資料庫下的所有表 show tables 4.檢視表結構 顯示各欄位 desc 表名 5.資料匯出到本地 在hive中操作 insert overwrite local directo...

hive 基本操作

檢視表的詳細資訊 desc 表名 desc formatted 表名 建立外部表 create external table emp ext empno int,ename string,job string,mgr int,hiredate string,sal double,comm doubl...