Hive是什么?
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射成為一張數(shù)據(jù)庫表,并提供類SQL的查詢功能。可以將sql語大數(shù)據(jù)培訓(xùn)句轉(zhuǎn)化為MapReduce任務(wù)進(jìn)行運(yùn)行。Hive提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載,這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。
Hive的架構(gòu)
用戶接口:Shell/CLI,CLI,Shell終端命令行,采用交互形式使用 Hive 命令行與 Hive 進(jìn)行交互。Cli啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè)Hive副本。JDBC/ODBC客戶端是Hive的JAVA實(shí)現(xiàn),與傳統(tǒng)數(shù)據(jù)庫JDBC類似。Web UI通過瀏覽器訪問hive。主要用來將我們的sql語句提交給hive。
Thrift服務(wù)器:Thrift是Facebook開發(fā)的一個(gè)軟件框架,可以用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā),Hiv集成了該服務(wù),能讓不同的編程語言調(diào)用Hive的接口。
元數(shù)據(jù)庫: 存儲(chǔ)在 Hive 中的數(shù)據(jù)的描述信息。Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,如 mysql、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性,表的數(shù)據(jù)所在目錄等。
解釋器包含編譯器、優(yōu)化器、執(zhí)行器:完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。
編譯器:主要將sql語句編譯成一個(gè)MR的任務(wù)。
優(yōu)化器:主要是對我們的sql語句進(jìn)行優(yōu)化。
執(zhí)行器:提交mr任務(wù),進(jìn)行執(zhí)行。
Hive的數(shù)據(jù)基于HDFS進(jìn)行存儲(chǔ),查詢計(jì)劃被轉(zhuǎn)化為MapReduce任務(wù),在Hadoop中執(zhí)行。
操作數(shù)據(jù)庫
1.創(chuàng)建數(shù)據(jù)庫:create database if not exists 數(shù)據(jù)庫名;
2.創(chuàng)建數(shù)據(jù)庫并指定hdfs存儲(chǔ)位置:create database 數(shù)據(jù)庫名 location '位置’;
3.查看有哪些數(shù)據(jù)庫:show databases;
4.修改數(shù)據(jù)庫的信息:alter database 數(shù)據(jù)庫名 set dbproperties()
5.查看數(shù)據(jù)庫的信息:desc database 數(shù)據(jù)庫名;
6.查詢詳細(xì)數(shù)據(jù)庫信息:desc database extended 數(shù)據(jù)庫名;
7.刪除數(shù)據(jù)庫(刪除一個(gè)空數(shù)據(jù)庫):drop database 數(shù)據(jù)庫名;
8.強(qiáng)制刪除數(shù)據(jù)庫(刪除有數(shù)據(jù)的數(shù)據(jù)庫):drop database myhive cascade;