最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數(shù)據(jù)庫之Hive概論和架構(gòu)和基本操作

 更新時(shí)間:2023年04月07日 09:36:10   作者:NeilNiu  
Hive是一個(gè)構(gòu)建在Hadoop上的數(shù)據(jù)倉庫框架,最初,Hive是由Facebook開發(fā),后臺(tái)移交由Apache軟件基金會(huì)開發(fā),并做為一個(gè)Apache開源項(xiàng)目,感興趣的同學(xué)可以參考閱讀

Hive概論

Hive是一個(gè)構(gòu)建在Hadoop上的數(shù)據(jù)倉庫框架,最初,Hive是由Facebook開發(fā),后臺(tái)移交由Apache軟件基金會(huì)開發(fā),并做為一個(gè)Apache開源項(xiàng)目。

Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類SQL查詢功能。

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

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

Hive架構(gòu)

Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)架構(gòu),它提供了一系列的工具,可以存儲(chǔ)、查詢、分析存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)中的大規(guī)模數(shù)據(jù)集。Hive定義了簡(jiǎn)單的類SQL查詢語言,通過底層的計(jì)算引擎,將SQL轉(zhuǎn)為具體的計(jì)算任務(wù)進(jìn)行執(zhí)行。

 客戶端:寫類SQL語句

Hive驅(qū)動(dòng)器:解析、優(yōu)化SQL

計(jì)算引擎:通過計(jì)算引擎來執(zhí)行SQL

數(shù)據(jù)存儲(chǔ):存儲(chǔ)源數(shù)據(jù)和結(jié)果數(shù)據(jù)

MapReduce

它將計(jì)算分為兩個(gè)階段,分別為Map和Reduce。對(duì)于應(yīng)用來說,需要想辦法將應(yīng)用拆分為多個(gè)map、reduce,以完成一個(gè)完整的算法。

MapReduce整個(gè)計(jì)算過程會(huì)不斷重復(fù)的往磁盤里讀寫中間結(jié)果。導(dǎo)致計(jì)算速度比較慢,效率比較低。

Tez

把Map/Reduce過程拆分成若干個(gè)子過程,同時(shí)可以把多個(gè)Map/Reduce任務(wù)組合成一個(gè)較大DAG任務(wù),減少了Map/Reduce之間的文件存儲(chǔ)。 

Spark

Apache Spark是一個(gè)快速的,多用途的集群計(jì)算系統(tǒng),相對(duì)于Hadoop MapReduce將中間結(jié)果保存在磁盤中,Spark使用了內(nèi)存保存中間結(jié)果,能在數(shù)據(jù)尚未寫入硬盤時(shí)在內(nèi)存中進(jìn)行計(jì)算,同時(shí)Spark提供SQL支持。 Spark 實(shí)現(xiàn)了一種叫RDDs的DAG執(zhí)行引擎,其數(shù)據(jù)緩存在內(nèi)存中可以進(jìn)行迭代處理。

使用的是Hive+Spark計(jì)算引擎

 Hive安全和啟動(dòng)

1、啟動(dòng)集群中所有的組件

cd /export/onekey

./start-all.sh

2、使用終端鏈接Hive 

1)、進(jìn)入到/export/server/spark-2.3.0-bin-hadoop2.7/bin目錄中

2)、執(zhí)行以下命令:./beeline

3)、輸入:!connect jdbc:hive2://node1:10000,回車

4)、輸入用戶名:root

5)、直接回車,即可使用命令行連接到Hive,然后就可以執(zhí)行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> 。

連接成功的標(biāo)志。

Hive的數(shù)據(jù)庫和表

Hive數(shù)倉和傳統(tǒng)關(guān)系型數(shù)據(jù)庫類似,管理數(shù)倉數(shù)據(jù)也有數(shù)據(jù)庫和表

Hive數(shù)據(jù)庫操作

1)、創(chuàng)建數(shù)據(jù)庫-默認(rèn)方式

create database if not exists myhive;

show databases; #查看所有數(shù)據(jù)庫

說明:

1、if not exists:該參數(shù)可選,表示如果數(shù)據(jù)存在則不創(chuàng)建(不加該參數(shù)則報(bào)錯(cuò)),不存在則創(chuàng)建

2、hive的數(shù)據(jù)庫默認(rèn)存放在/user/hive/warehouse目錄

2)、創(chuàng)建數(shù)據(jù)庫-指定存儲(chǔ)路徑

create database myhive2 location '/myhive2';

show databases; #查看所有數(shù)據(jù)庫

說明:

1、location:用來指定數(shù)據(jù)庫的存放路徑。

3)、查看數(shù)據(jù)庫詳情信息

desc database myhive;

4)、刪除數(shù)據(jù)庫

刪除一個(gè)空數(shù)據(jù)庫,如果數(shù)據(jù)庫下面有數(shù)據(jù)表,就會(huì)報(bào)錯(cuò)

drop database myhive;

強(qiáng)制刪除數(shù)據(jù)庫,包含數(shù)據(jù)庫下面的表一起刪除

drop database myhive2 cascade;

5)、創(chuàng)建數(shù)據(jù)庫表語法

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)、表字段數(shù)據(jù)類型

 7)、表字段數(shù)據(jù)類型-復(fù)雜類型

8)、 內(nèi)部表操作-創(chuàng)建表

未被external修飾的內(nèi)部表(managed table),內(nèi)部表又稱管理表,內(nèi)部表不適合用于共享數(shù)據(jù)。

create database  mytest;  #創(chuàng)建數(shù)據(jù)庫

user mytest; #選擇數(shù)據(jù)庫

create table stu(id int, name string);

show tables; #查詢數(shù)據(jù)

 創(chuàng)建表之后,Hive會(huì)在對(duì)應(yīng)的數(shù)據(jù)庫文件夾下創(chuàng)建對(duì)應(yīng)的表目錄。

9)、內(nèi)部表操作-查看表結(jié)構(gòu)/刪除表

查看表結(jié)構(gòu)

desc stu;#查看表結(jié)構(gòu)基本信息

desc formatted stu;查看表結(jié)構(gòu)詳細(xì)信息

刪除表 

drop table stu;

Hive內(nèi)部表操作-數(shù)據(jù)添加

1)、方式1-直接插入數(shù)據(jù)

對(duì)于Hive中的表,可以通過insert into 指令向表中插入數(shù)據(jù)

user mytest; #選擇數(shù)據(jù)庫
create table stu(id int, name string); # 創(chuàng)建表
# 向表中插入數(shù)據(jù)
insert into stu values(1, 'test1');
insert into stu values(2, 'test2');
 
select * from stu; #查詢數(shù)據(jù)

2)、方式2-load數(shù)據(jù)加載

Load 命令用于將外部數(shù)據(jù)加載到Hive表中

語法:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)]
 
說明:
  LOCAL 表示從本地文件系統(tǒng)加載,否則是從HDFS加載

應(yīng)用1-本地加載

#創(chuàng)建表,同時(shí)指定文件的分隔符
create table if not exists stu2(id int ,name string) 
row format delimited fields terminated by '\t' ;
#向表加載數(shù)據(jù)
load data local inpath '/export/data/hivedatas/stu.txt' into table stu2;

應(yīng)用2-HDFS加載

#創(chuàng)建表,同時(shí)指定文件的分隔符
create table if not exists stu3(id int ,name string) 
row format delimited fields terminated by '\t' ;
#向表加載數(shù)據(jù)
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內(nèi)部表特點(diǎn)

1)、元數(shù)據(jù)

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

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

Hive的元數(shù)據(jù)保存在Mysql數(shù)據(jù)庫中

2)、內(nèi)部表特點(diǎn)

hive內(nèi)部表信息存儲(chǔ)默認(rèn)的文件路徑是在/user/hive/warehouse/databasename.db/tablename目錄

hive 內(nèi)部表在進(jìn)行drop操作時(shí),其表中的數(shù)據(jù)以及表的元數(shù)據(jù)信息均會(huì)被刪除

內(nèi)部表一般可以用來做中間表或者臨時(shí)表

Hive外部表操作

1)、創(chuàng)建表

創(chuàng)建表時(shí),使用external關(guān)鍵字修飾則為外部表,外部表數(shù)據(jù)可用于共享

#創(chuàng)建學(xué)生表
create external table student (sid string,sname string,sbirth string , ss       ex string) row format delimited fields terminated by ‘\t' location ‘/hive_table/student‘;
 
#創(chuàng)建老師表
create external table teacher (tid string,tname string) row format delimited fields terminated by '\t' location ‘/hive_table/teacher‘;

創(chuàng)建表之后,Hive會(huì)在Location指定目錄下創(chuàng)建對(duì)應(yīng)的表目錄。

2)、加載數(shù)據(jù)

外部表加載數(shù)據(jù)也是通過load命令來完成

#給學(xué)生表添加數(shù)據(jù) 
load data local inpath '/export/data/hivedatas/student.txt' into table student; 
 
#給老師表添加數(shù)據(jù),并覆蓋已有數(shù)據(jù) 
load data local inpath '/export/data/hivedatas/teacher.txt' overwrite into table teacher;
 
 
#查詢數(shù)據(jù)
select * from student; 
select * from teacher;

3)、外部表特點(diǎn)

外部表在進(jìn)行drop操作的時(shí)候,僅會(huì)刪除元數(shù)據(jù),而不刪除HDFS上的文件

外部表一般用于數(shù)據(jù)共享表,比較安全

4)、安裝Visual Studio Code

開發(fā)Hive的時(shí)候,經(jīng)常要編寫類SQL,

Hive表操作-分區(qū)表

1)、介紹

在大數(shù)據(jù)中,最常用的一種思想是分治,分區(qū)表實(shí)際就是對(duì)應(yīng)hdfs文件系統(tǒng)上的獨(dú)立的文件的文件夾,該文件夾下是該分區(qū)所有數(shù)據(jù)文件。

分區(qū)可以理解為分類,通過分類把不同類型的數(shù)據(jù)放到不同的目錄下。

Hive中可以創(chuàng)建一級(jí)分區(qū)表,也可以創(chuàng)建多級(jí)分區(qū)表

2)、創(chuàng)建一級(jí)分區(qū)表

create table score(sid string,cid string, sscore int) partitioned by (month string) row format delimited fields terminated by '\t';

3)、數(shù)據(jù)加載

load data local inpath '/export/data/hivedatas/score.txt' into table score partition (month='202006');

4)、創(chuàng)建多級(jí)分區(qū)表

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)、數(shù)據(jù)加載

load data local inpath '/export/data/hivedatas/score.txt' into table score2 partition(year='2020',month='06',day='01');

加載數(shù)據(jù)之后,多級(jí)分區(qū)表會(huì)創(chuàng)建多級(jí)分區(qū)目錄。

6)、查看分區(qū)

show partitions score;

7)、添加分區(qū)

alter table score add partition(month='202008'); alter table score add partition(month='202009') partition(month = '202010');

8)、刪除分區(qū)

alter table score drop partition(month = '202010');

9)、Array類型

Array是數(shù)組類型,Aarray中存放相同類型的數(shù)據(jù)

源數(shù)據(jù):

zhangsan beijing,shanghai,tianjin,hangzhouwangwu changchun,chengdu,wuhan,beijin

建表數(shù)據(jù):

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;

查詢語句:

-- 查詢所有數(shù)據(jù) select * from hive_array; -- 查詢loction數(shù)組中第一個(gè)元素 select name, work_locations[0] location from hive_array; -- 查詢location數(shù)組中元素的個(gè)數(shù) select name, size(work_locations) location from hive_array; -- 查詢location數(shù)組中包含tianjin的信息 select * from hive_array where array_contains(work_locations,'tianjin'); 

以上就是數(shù)據(jù)庫之Hive概論和架構(gòu)和基本操作的詳細(xì)內(nèi)容,更多關(guān)于Hive概論和架構(gòu)和基本操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 幾種常用DB驅(qū)動(dòng)和DB連接串小結(jié)

    幾種常用DB驅(qū)動(dòng)和DB連接串小結(jié)

    幾種常用DB驅(qū)動(dòng)和DB連接串,方便大家用各種程序,連接數(shù)據(jù)庫。
    2009-12-12
  • 關(guān)于數(shù)據(jù)庫設(shè)計(jì)中主鍵問題的思考

    關(guān)于數(shù)據(jù)庫設(shè)計(jì)中主鍵問題的思考

    數(shù)據(jù)庫主鍵在數(shù)據(jù)庫中占有重要地位。主鍵的選取策略決定了系統(tǒng)是否可靠、易用、高效。本文探討了數(shù)據(jù)庫設(shè)計(jì)過程當(dāng)中常見的主鍵選取策略,并剖析了其做主鍵的優(yōu)缺點(diǎn),提出了相應(yīng)的解決問題的方法
    2013-08-08
  • sql注入之必備的基礎(chǔ)知識(shí)

    sql注入之必備的基礎(chǔ)知識(shí)

    這篇文章所有的知識(shí)點(diǎn)都是在sql注入中最常用到也是最基礎(chǔ)的知識(shí)點(diǎn)。對(duì)于一個(gè)需要精通sql語句的web安全工程師來說,下面的知識(shí)是必須要掌握的。下面的知識(shí)也是學(xué)習(xí)sql注入最基本的知識(shí)。下面大家來一起看看吧。
    2016-09-09
  • sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

    sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

    這篇文章主要介紹了sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法,需要的朋友可以參考下
    2014-06-06
  • node-mysql中防止SQL注入的方法總結(jié)

    node-mysql中防止SQL注入的方法總結(jié)

    大家都知道SQL注入對(duì)于網(wǎng)站或者服務(wù)器來講都是一個(gè)非常危險(xiǎn)的問題,如果這一方面沒處理好的話網(wǎng)站可能隨時(shí)給注入了,所以這篇文章就給大家總結(jié)了node-mysql中防止SQL注入的幾種常用做法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • MySQL與Redis如何保證數(shù)據(jù)一致性詳解

    MySQL與Redis如何保證數(shù)據(jù)一致性詳解

    在高并發(fā)的業(yè)務(wù)場(chǎng)景下數(shù)據(jù)庫大多數(shù)情況都是用戶并發(fā)訪問最薄弱的環(huán)節(jié),所以就需要使用redis做一個(gè)緩沖操作,讓請(qǐng)求先訪問到redis,而不直接訪問Mysql等數(shù)據(jù)庫,這篇文章主要給大家介紹了關(guān)于MySQL與Redis如何保證數(shù)據(jù)一致性的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 時(shí)序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    時(shí)序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    這篇文章主要為大家介紹了VictoriaMetrics時(shí)序數(shù)據(jù)庫的寫入與索引源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 什么是數(shù)據(jù)庫索引 有哪些類型和特點(diǎn)

    什么是數(shù)據(jù)庫索引 有哪些類型和特點(diǎn)

    這篇文章主要介紹了網(wǎng)站數(shù)據(jù)庫的優(yōu)化最為基礎(chǔ)的優(yōu)化措施就是建立數(shù)據(jù)庫索引了,這里就介紹一下,什么是數(shù)據(jù)庫索引?有哪些類型和特點(diǎn)
    2015-10-10
  • 關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)則詳解

    關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)則詳解

    大家好,本篇文章主要講的是關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)則詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Mssql,Access的sql經(jīng)典SQL語句大全

    Mssql,Access的sql經(jīng)典SQL語句大全

    常用不常用的一些sql語句,對(duì)數(shù)據(jù)庫操作不是很熟練的朋友可以查詢
    2012-03-03

最新評(píng)論

罗源县| 台中县| 迭部县| 健康| 平度市| 峨边| 临安市| 瓮安县| 行唐县| 白山市| 荆州市| 内黄县| 鄱阳县| 上思县| 曲靖市| 舟山市| 新建县| 两当县| 庄河市| 大同县| 昌吉市| 玛沁县| 积石山| 陆良县| 潍坊市| 丰台区| 互助| 武定县| 兴文县| 青州市| 炉霍县| 泰来县| 临清市| 新和县| 江阴市| 耿马| 五寨县| 江安县| 寿光市| 和田市| 麻阳|