<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Hive是一個構建在Hadoop上的資料倉儲框架,最初,Hive是由Facebook開發,後臺移交由Apache軟體基金會開發,並做為一個Apache開源專案。
Hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供類SQL查詢功能。
Hive它能夠儲存很大的資料集,可以直接存取儲存在Apache HDFS或其他資料儲存系統(如Apache HBase)中的檔案。
Hive支援MapReduce、Spark、Tez這三種分散式計算引擎。
Hive是建立在Hadoop上的資料倉儲基礎架構,它提供了一系列的工具,可以儲存、查詢、分析儲存在分散式儲存系統中的大規模資料集。Hive定義了簡單的類SQL查詢語言,通過底層的計算引擎,將SQL轉為具體的計算任務進行執行。
使用者端:寫類SQL語句
Hive驅動器:解析、優化SQL
計算引擎:通過計算引擎來執行SQL
資料儲存:儲存源資料和結果資料
MapReduce
它將計算分為兩個階段,分別為Map和Reduce。對於應用來說,需要想辦法將應用拆分為多個map、reduce,以完成一個完整的演演算法。
MapReduce整個計算過程會不斷重複的往磁碟裡讀寫中間結果。導致計算速度比較慢,效率比較低。
Tez
把Map/Reduce過程拆分成若干個子過程,同時可以把多個Map/Reduce任務組合成一個較大DAG任務,減少了Map/Reduce之間的檔案儲存。
Spark
Apache Spark是一個快速的,多用途的叢集計算系統,相對於Hadoop MapReduce將中間結果儲存在磁碟中,Spark使用了記憶體儲存中間結果,能在資料尚未寫入硬碟時在記憶體中進行計算,同時Spark提供SQL支援。 Spark 實現了一種叫RDDs的DAG執行引擎,其資料快取在記憶體中可以進行迭代處理。
使用的是Hive+Spark計算引擎
1、啟動叢集中所有的元件
cd /export/onekey
./start-all.sh
2、使用終端連結Hive
1)、進入到/export/server/spark-2.3.0-bin-hadoop2.7/bin目錄中
2)、執行以下命令:./beeline
3)、輸入:!connect jdbc:hive2://node1:10000,回車
4)、輸入使用者名稱:root
5)、直接回車,即可使用命令列連線到Hive,然後就可以執行HQL了。
[root@node1 onekey]# cd /export/server/spark-2.3.0-bin-hadoop2.7/bin [root@node1 bin]# ./beeline Beeline version 1.2.1.spark2 by Apache Hive beeline> !connect jdbc:hive2://node1:10000 Connecting to jdbc:hive2://node1.itcast.cn:10000 Enter username for jdbc:hive2://node1.itcast.cn:10000: root Enter password for jdbc:hive2://node1.itcast.cn:10000: 直接回車 2021-01-08 14:34:24 INFO Utils:310 - Supplied authorities: node1.itcast.cn:10000 2021-01-08 14:34:24 INFO Utils:397 - Resolved authority: node1.itcast.cn:10000 2021-01-08 14:34:24 INFO HiveConnection:203 - Will try to open client transport with JDBC Uri: jdbc:hive2://node1.itcast.cn:10000 Connected to: Spark SQL (version 2.3.0) Driver: Hive JDBC (version 1.2.1.spark2) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://node1.itcast.cn:10000> 。
連線成功的標誌。
Hive的資料庫和表
Hive數倉和傳統關係型資料庫類似,管理數倉資料也有資料庫和表
1)、建立資料庫-預設方式
create database if not exists myhive;
show databases; #檢視所有資料庫
說明:
1、if not exists:該引數可選,表示如果資料存在則不建立(不加該引數則報錯),不存在則建立
2、hive的資料庫預設存放在/user/hive/warehouse目錄
2)、建立資料庫-指定儲存路徑
create database myhive2 location '/myhive2';
show databases; #檢視所有資料庫
說明:
1、location:用來指定資料庫的存放路徑。
3)、檢視資料庫詳情資訊
desc database myhive;
4)、刪除資料庫
刪除一個空資料庫,如果資料庫下面有資料表,就會報錯
drop database myhive;
強制刪除資料庫,包含資料庫下面的表一起刪除
drop database myhive2 cascade;
5)、建立資料庫表語法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 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] [ROW FORMAT row_format] [LOCATION hdfs_path]
6)、表欄位資料型別
7)、表欄位資料型別-複雜型別
8)、 內部表操作-建立表
未被external修飾的內部表(managed table),內部表又稱管理表,內部表不適合用於共用資料。
create database mytest; #建立資料庫
user mytest; #選擇資料庫
create table stu(id int, name string);
show tables; #查詢資料
建立表之後,Hive會在對應的資料庫資料夾下建立對應的表目錄。
9)、內部表操作-檢視表結構/刪除表
檢視表結構
desc stu;#檢視表結構基本資訊
desc formatted stu;檢視表結構詳細資訊
刪除表
drop table stu;
1)、方式1-直接插入資料
對於Hive中的表,可以通過insert into 指令向表中插入資料
user mytest; #選擇資料庫 create table stu(id int, name string); # 建立表 # 向表中插入資料 insert into stu values(1, 'test1'); insert into stu values(2, 'test2'); select * from stu; #查詢資料
2)、方式2-load資料載入
Load 命令用於將外部資料載入到Hive表中
語法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)] 說明: LOCAL 表示從本地檔案系統載入,否則是從HDFS載入
應用1-本地載入
#建立表,同時指定檔案的分隔符 create table if not exists stu2(id int ,name string) row format delimited fields terminated by 't' ; #向表載入資料 load data local inpath '/export/data/hivedatas/stu.txt' into table stu2;
應用2-HDFS載入
#建立表,同時指定檔案的分隔符 create table if not exists stu3(id int ,name string) row format delimited fields terminated by 't' ; #向表載入資料 hadoop fs -mkdir -p /hivedatas cd /export/data/hivedatas hadoop fs –put stu.txt /hivedatas/ load data inpath '/hivedatas/stu.txt' into table stu3;
1)、後設資料
Hive是建立在Hadoop之上的資料倉儲,存在hive裡的資料實際上就是存在HDFS上,都是以檔案的形式存在
Hive後設資料用來記錄資料庫和表的特徵資訊,比如資料庫的名字、儲存路徑、表的名字、欄位資訊、表檔案儲存路徑等等
Hive的後設資料儲存在Mysql資料庫中
2)、內部表特點
hive內部表資訊儲存預設的檔案路徑是在/user/hive/warehouse/databasename.db/tablename目錄
hive 內部表在進行drop操作時,其表中的資料以及表的後設資料資訊均會被刪除
內部表一般可以用來做中間表或者臨時表
1)、建立表
建立表時,使用external關鍵字修飾則為外部表,外部表資料可用於共用
#建立學生表 create external table student (sid string,sname string,sbirth string , ss ex string) row format delimited fields terminated by ‘t' location ‘/hive_table/student‘; #建立老師表 create external table teacher (tid string,tname string) row format delimited fields terminated by 't' location ‘/hive_table/teacher‘;
建立表之後,Hive會在Location指定目錄下建立對應的表目錄。
2)、載入資料
外部表載入資料也是通過load命令來完成
#給學生表新增資料 load data local inpath '/export/data/hivedatas/student.txt' into table student; #給老師表新增資料,並覆蓋已有資料 load data local inpath '/export/data/hivedatas/teacher.txt' overwrite into table teacher; #查詢資料 select * from student; select * from teacher;
3)、外部表特點
外部表在進行drop操作的時候,僅會刪除後設資料,而不刪除HDFS上的檔案
外部表一般用於資料共用表,比較安全
4)、安裝Visual Studio Code
開發Hive的時候,經常要編寫類SQL,
1)、介紹
在巨量資料中,最常用的一種思想是分治,分割區表實際就是對應hdfs檔案系統上的獨立的檔案的資料夾,該資料夾下是該分割區所有資料檔案。
分割區可以理解為分類,通過分類把不同型別的資料放到不同的目錄下。
Hive中可以建立一級分割區表,也可以建立多級分割區表
2)、建立一級分割區表
create table score(sid string,cid string, sscore int) partitioned by (month string) row format delimited fields terminated by 't';
3)、資料載入
load data local inpath '/export/data/hivedatas/score.txt' into table score partition (month='202006');
4)、建立多級分割區表
create table score2(sid string,cid string, sscore int) partitioned by (year string,month string, day string) row format delimited fields terminated by 't';
5)、資料載入
load data local inpath '/export/data/hivedatas/score.txt' into table score2 partition(year='2020',month='06',day='01');
載入資料之後,多級分割區表會建立多級分割區目錄。
6)、檢視分割區
show partitions score;
7)、新增分割區
alter table score add partition(month='202008'); alter table score add partition(month='202009') partition(month = '202010');
8)、刪除分割區
alter table score drop partition(month = '202010');
9)、Array型別
Array是陣列型別,Aarray中存放相同型別的資料
源資料:
zhangsan beijing,shanghai,tianjin,hangzhouwangwu changchun,chengdu,wuhan,beijin
建表資料:
create external table hive_array(name string, work_locations array<string>) row format delimited fields terminated by 't' collection items terminated by ',';
建表語句:
load data local inpath '/export/data/hivedatas/array_data.txt' overwrite into table hive_array;
查詢語句:
-- 查詢所有資料 select * from hive_array; -- 查詢loction陣列中第一個元素 select name, work_locations[0] location from hive_array; -- 查詢location陣列中元素的個數 select name, size(work_locations) location from hive_array; -- 查詢location陣列中包含tianjin的資訊 select * from hive_array where array_contains(work_locations,'tianjin');
以上就是資料庫之Hive概論和架構和基本操作的詳細內容,更多關於Hive概論和架構和基本操作的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45