久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

數據庫之Hive概論和架構和基本操作是什么

185次閱讀
沒有評論

共計 6624 個字符,預計需要花費 17 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下數據庫之 Hive 概論和架構和基本操作是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Hive 概論

Hive 是一個構建在 Hadoop 上的數據倉庫框架,最初,Hive 是由 Facebook 開發,后臺移交由 Apache 軟件基金會開發,并做為一個 Apache 開源項目。

Hive 是基于 Hadoop 的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類 SQL 查詢功能。

Hive 它能夠存儲很大的數據集,可以直接訪問存儲在 Apache HDFS 或其他數據存儲系統(如 Apache HBase)中的文件。

Hive 支持 MapReduce、Spark、Tez 這三種分布式計算引擎。

Hive 架構

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 計算引擎

 Hive 安全和啟動

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 數倉和傳統關系型數據庫類似,管理數倉數據也有數據庫和表

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;

Hive 內部表操作 - 數據添加

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;

Hive 內部表特點

1)、元數據

Hive 是建立在 Hadoop 之上的數據倉庫,存在 hive 里的數據實際上就是存在 HDFS 上,都是以文件的形式存在

Hive 元數據用來記錄數據庫和表的特征信息,比如數據庫的名字、存儲路徑、表的名字、字段信息、表文件存儲路徑等等

Hive 的元數據保存在 Mysql 數據庫中

2)、內部表特點

hive 內部表信息存儲默認的文件路徑是在 /user/hive/warehouse/databasename.db/tablename 目錄

hive 內部表在進行 drop 操作時,其表中的數據以及表的元數據信息均會被刪除

內部表一般可以用來做中間表或者臨時表

Hive 外部表操作

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,

Hive 表操作 - 分區表

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 概論和架構和基本操作是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計6624字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 梨树县| 永安市| 南涧| 凤凰县| 宜阳县| 惠来县| 达州市| 平顶山市| 侯马市| 静海县| 洪湖市| 泰来县| 连城县| 西安市| 左权县| 顺昌县| 莱阳市| 绥化市| 商河县| 宁德市| 报价| 来宾市| 青阳县| 奉贤区| 子洲县| 大理市| 资溪县| 礼泉县| 新河县| 乃东县| 新昌县| 南江县| 丹凤县| 江北区| 江永县| 灌阳县| 陆丰市| 缙云县| 聂荣县| 洛阳市| 新巴尔虎右旗|