導航:首頁 > 編程大全 > hive查看資料庫

hive查看資料庫

發布時間:2023-01-09 07:32:30

Ⅰ Hive 資料庫表的基本操作,必須掌握的基本功

說明:hive 的表存放位置模式是由 hive-site.xml 當中的一個屬性指定的,默認是存放在該配置文件設置的路徑下,也可在創建資料庫時單獨指定存儲路徑。

資料庫有一些描述性的屬性信息,可以在創建時添加:

查看資料庫的鍵值對信息

修改資料庫的鍵值對信息

與mysql查詢語句是一樣的語法

刪除一個空資料庫,如果資料庫下面有數據表,那麼就會報錯

強制刪除資料庫,包含資料庫下面的表一起刪除(請謹慎操作)


[]里的屬性為可選屬性,不是必須的,但是如果有可選屬性,會使 sql 語句的易讀性更好,更標准與規范。

例如:[comment '欄位注釋信息'][comment '表的描述信息']等,[external]屬性除外


1. CREATE TABLE
創建一個指定名字的表,如果相同名字的表已存在,則拋出異常提示:表已存在,使用時可以使用IF NOT EXISTS語句來忽略這個異常。

如果創建的表名已存在,則不會再創建,也不會拋出異常提示:表已存在。否則則自動創建該表。


2. EXTERNAL
顧名思義是外部的意思,此關鍵字在建表語句中讓使用者可以創建一個外部表,如果不加該關鍵字,則默認創建內部表。

外部表在創建時必須同時指定一個指向實際數據的路徑(LOCATION),Hive在創建內部表時,會將數據移動到數據倉庫指向的路徑;

若創建外部表,僅記錄數據所在的路徑,不對數據的位置作任何改變。

內部表在刪除後,其元數據和數據都會被一起刪除。
外部表在刪除後,只刪除其元數據,數據不會被刪除。


3. COMMENT
用於給表的各個欄位或整張表的內容作解釋說明的,便於他人理解其含義。


4. PARTITIONED BY
區分表是否是分區表的關鍵欄位,依據具體欄位名和類型來決定表的分區欄位。


5. CLUSTERED BY
依據column_name對表進行分桶,在 Hive 中對於每一張表或分區,Hive 可以通過分桶的方式將數據以更細粒度進行數據范圍劃分。Hive採用對列值哈希,然後除以桶的個數求余的方式決定該條記錄存放在哪個桶當中。


6. SORTED BY
指定表數據的排序欄位和排序規則,是正序還是倒序排列。


7. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
指定表存儲中列的分隔符,這里指定的是' ',也可以是其他分隔符。


8. STORED AS SEQUENCEFILE|TEXTFILE|RCFILE
指定表的存儲格式,如果文件數據是純文本格式,可以使用STORED AS TEXTFILE,如果數據需要壓縮,則可以使用STORED AS SEQUENCEFILE。


9. LOCATION
指定 Hive 表在 hdfs 里的存儲路徑,一般內部表(Managed Table)不需要自定義,使用配置文件中設置的路徑即可。
如果創建的是一張外部表,則需要單獨指定一個路徑。


1. 使用create table語句創建表
例子:


2. 使用create table ... as select...語句創建表
例子:

使用 create table ... as select ...語句來創建新表sub_student,此時sub_student 表的結構及表數據與 t_student 表一模一樣, 相當於直接將 t_student 的表結構和表數據復制一份到 sub_student 表。


注意:
(1). select 中選取的列名(如果是 * 則表示選取所有列名)會作為新表 sub_student 的列名。

(2). 該種創建表的方式會改變表的屬性以及結構,例如不能是外部表,只能是內部表,也不支持分區、分桶。

如果as select後的表是分區表,並且使用select *,則分區欄位在新表裡只是作為欄位存在,而不是作為分區欄位存在。

在使用該種方式創建時,create 與 table 之間不能加 external 關鍵字,即不能通過該種方式創建外部目標表,默認只支持創建內部目標表。

(3). 該種創建表的方式所創建的目標表存儲格式會變成默認的格式textfile。


3.使用like語句創建表
例子:


注意:
(1). 只是將 t_student 的表結構復制給 sub1_student 表。

(2). 並不復制 t_student 表的數據給 sub1_student 表。

(3). 目標表可以創建為外部表,即:

linux hive 查 哪些database

啟動hive後,輸入:
查看資料庫:show databases;
如果資料庫比較多的話,也可以用正則表達式來查看:show databases like 'd.*';

Ⅲ 為什麼linux 查看hive資料庫中文不亂碼,到 HUE里查看就是亂碼

在元資料庫執行以下語句:
alter database hue character set latin1;
alter table beeswax_queryhistory modify `query` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

Ⅳ 如何用Hive訪問Hadoop上數據

步驟
Hive提供了jdbc驅動,使得我們可以連接Hive並進行一些類關系型資料庫的sql語句查詢等操作,首先我們需要將這些驅動拷貝到報表工程下面,然後再建立連接,最後通過連接進行數據查詢。
拷貝jar包到FR工程
將hadoop里的hadoop-common.jar拷貝至報表工程appname/WEB-INF/lib下;
將hive里的hive-exec.jar、hive-jdbc.jar、hive-metastore.jar、hive-service.jar、libfb303.jar、log4j.jar、slf4j-api.jar、slf4j-log4j12.jar拷貝至報表工程appname/WEB-INF/lib下。
配置數據連接
啟動設計器,打開伺服器>定義數據連接,新建JDBC連接。
在Hive 0.11.0版本之前,只有HiveServer服務可用,在程序操作Hive之前,必須在Hive安裝的伺服器上打開HiveServer服務。而HiveServer本身存在很多問題(比如:安全性、並發性等);針對這些問題,Hive0.11.0版本提供了一個全新的服務:HiveServer2,這個很好的解決HiveServer存在的安全性、並發性等問題,所以下面我們分別介紹HiveServer和HiveServer2配置數據連接的方式。
HiveServer
資料庫驅動:org.apache.hadoop.hive.jdbc.HiveDriver;
URL:jdbc:hive://localhost:10000/default
註:hive服務默認埠為10000,根據實際情況修改埠;另外目前只支持默認資料庫名default,所有的Hive都支持。
測試連接,提示連接成功即可。

4
資料庫驅動:org.apache.hive.jdbc.HiveDriver;
URL:jdbc:hive2://localhost:10000/default
註:該連接方式只支持Hive0.11.0及之後版本。

Ⅳ hive中怎麼查詢出所有庫的所有表名

在表上面右擊——編寫表腳本為:——Create到——新查詢編輯器窗口,你也可以保存為sql文件,新查詢編輯器窗口的話在最上面一條把use databasename改成你要復制過去的資料庫名稱

Ⅵ HIVE如何查看錶和資料庫

查看錶結構信息如下

1、descformattedtable_name;

2、desctable_name。

一、電腦常見問題

主板不啟動,開機無顯示,有顯卡報警聲。

故障原因:一般是顯卡松動或顯卡損壞。

處理辦法:打開機箱,把顯卡重新插好即可。要檢查AGP插槽內是否有小異物,否則會使顯卡不能插接到位;對於使用語音報警的主板,應仔細辨別語音提示的內容,再根據內容解決相應故障。

如果以上辦法處理後還報警,就可能是顯卡的晶元壞了,更換或修理顯卡。如果開機後聽到"嘀"的一聲自檢通過,顯示器正常但就是沒有圖像,把該顯卡插在其他主板上,使用正常,那就是顯卡與主板不兼容,應該更換顯卡。

Ⅶ hive查詢數據一直卡住,最後報錯

然後刪除NEXT_LOCK_ID一條記錄。
NEXT_LOCK_ID 始終有鎖,無法刪除數據。;1、停止hiveserver2,MetaStore 服務;發現還有鎖;2、查看hive應用進程 ps -ef|grep hive,全部殺掉,鎖釋放;3、然後刪除NEXT_LOCK_ID一條記錄;4、重啟hiveserver2,MetaStore;5、查詢hive 恢復正常。
原因可能是多個進程同時操作,導致hive事務上的bug,插進了2條一樣的數據,導致元資料庫被鎖以下幾個hive元數據表跟hive的事務有關:NEXT_LOCK_ID;next_compaction_queue_id;next_txn_id;以上三個表出問題就有可能會報以下錯誤: error in acquiring locks: error communicating with the metastore.hive 卡死的原因很多,這個是其中之一,基本都hive metastore會有一些關系,大家可以按這個方向去定位原因,就能更快速尋找到問題的根源。

java中怎麼實現查詢出hive下所有資料庫下表名

try {
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");

String selectSql = "select * from db.data where address = '11111111'";
Connection connect = DriverManager.getConnection("jdbc:hive://192.168.xx.xx:10000/db", "xxx", "xxx");
PreparedStatement state = null;
state = connect.prepareStatement(selectSql);
ResultSet resultSet = state.executeQuery();
while (resultSet != null && resultSet.next()) {
System.out.println(resultSet.getString(1) + " " + resultSet.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}

Ⅸ Hive入門概述

1.1 什麼是Hive

Hive:由Facebook開源用於解決海量結構化日誌的數據統計。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張表,並提供類SQL查詢功能。本質是:將HQL轉化成MapRece程序

Hive處理的數據存儲在HDFS

Hive分析數據底層的實現是MapRece

執行程序運行在Yarn上

1.2 Hive的優缺點

1.2.1 優點

操作介面採用類SQL語法,提供快速開發的能力(簡單、容易上手)。

避免了去寫MapRece,減少開發人員的學習成本。

Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合。

Hive優勢在於處理大數據,對於處理小數據沒有優勢,因為Hive的執行延遲比較高。

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

1.2.2 缺點

1.Hive的HQL表達能力有限

(1)迭代式演算法無法表達

(2)數據挖掘方面不擅長

2.Hive的效率比較低

(1)Hive自動生成的MapRece作業,通常情況下不夠智能化

(2)Hive調優比較困難,粒度較粗

1.3 Hive架構原理

1.用戶介面:Client

CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)

2.元數據:Metastore

元數據包括:表名、表所屬的資料庫(默認是default)、表的擁有者、列/分區欄位、表的類型(是否是外部表)、表的數據所在目錄等;

默認存儲在自帶的derby資料庫中,推薦使用MySQL替代derby存儲Metastore

3.Hadoop

使用HDFS進行存儲,使用MapRece進行計算。

4.驅動器:Driver

(1)解析器(SQL Parser):將SQL字元串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、欄位是否存在、SQL語義是否有誤。

(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。

(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。

(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。

Hive通過給用戶提供的一系列交互介面,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapRece,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互介面。

1.4 Hive和資料庫比較

由於 Hive 採用了類似SQL 的查詢語言 HQL(Hive Query Language),因此很容易將 Hive 理解為資料庫。其實從結構上來看,Hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 Hive 和資料庫的差異。資料庫可以用在 Online 的應用中,但是Hive 是為數據倉庫而設計的,清楚這一點,有助於從應用角度理解 Hive 的特性。

1.4.1 查詢語言

由於SQL被廣泛的應用在數據倉庫中,因此,專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發的開發者可以很方便的使用Hive進行開發。

1.4.2 數據存儲位置

Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而資料庫則可以將數據保存在塊設備或者本地文件系統中。

1.4.3 數據更新

由於Hive是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive中不建議對數據的改寫,所有的數據都是在載入的時候確定好的。而資料庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO … VALUES 添加數據,使用 UPDATE … SET修改數據。

1.4.4 索引

Hive在載入數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引。Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由於 MapRece 的引入, Hive 可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,資料庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

1.4.5 執行

Hive中大多數查詢的執行是通過 Hadoop 提供的 MapRece 來實現的。而資料庫通常有自己的執行引擎。

1.4.6 執行延遲

Hive 在查詢數據的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外一個導致 Hive 執行延遲高的因素是 MapRece框架。由於MapRece 本身具有較高的延遲,因此在利用MapRece 執行Hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即數據規模較小,當數據規模大到超過資料庫的處理能力的時候,Hive的並行計算顯然能體現出優勢。

1.4.7 可擴展性

由於Hive是建立在Hadoop之上的,因此Hive的可擴展性是和Hadoop的可擴展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的規模在4000 台節點左右)。而資料庫由於 ACID 語義的嚴格限制,擴展行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴展能力也只有100台左右。

1.4.8 數據規模

由於Hive建立在集群上並可以利用MapRece進行並行計算,因此可以支持很大規模的數據;對應的,資料庫可以支持的數據規模較小。

Ⅹ hive命令中有沒有一個命令是顯示資料庫下所有的partitions

創建表:
Hive> CREATE TABLE pokes (foo INT, bar STRING);
Creates a table called pokes with two columns, the first being an integer and the other a string
創建一個新表,結構與其他一樣
hive> create table new_table like records;
創建分區表:
hive> create table logs(ts bigint,line string) partitioned by (dt String,country String);
載入分區表數據:
hive> load data local inpath '/home/Hadoop/input/hive/partitions/file1' into table logs partition (dt='2001-01-01',country='GB');
展示表中有多少分區:
hive> show partitions logs;
展示所有表:
hive> SHOW TABLES;
lists all the tables
hive> SHOW TABLES '.*s';
lists all the table that end with 's'. The pattern matching follows Java regular
expressions. Check out this link for documentationhttp://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html
顯示表的結構信息
hive> DESCRIBE invites;
shows the list of columns
更新表的名稱:
hive> ALTER TABLE source RENAME TO target;
添加新一列
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

刪除表:
hive> DROP TABLE records;
刪除表中數據,但要保持表的結構定義
hive> dfs -rmr /user/hive/warehouse/records;
從本地文件載入數據:
hive> LOAD DATA LOCAL INPATH '/home/hadoop/input/ncdc/micro-tab/sample.txt' OVERWRITE INTO TABLE records;
顯示所有函數:
hive> show functions;
查看函數用法:
hive> describe function substr;
查看數組、map、結構
hive> select col1[0],col2['b'],col3.c from complex;

內連接:
hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
查看hive為某個查詢使用多少個MapRece作業
hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
外連接:
hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);
in查詢:Hive不支持,但可以使用LEFT SEMI JOIN
hive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);

Map連接:Hive可以把較小的表放入每個Mapper的內存來執行連接操作
hive> SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);
INSERT OVERWRITE TABLE ..SELECT:新表預先存在
hive> FROM records2
> INSERT OVERWRITE TABLE stations_by_year SELECT year, COUNT(DISTINCT station) GROUP BY year
> INSERT OVERWRITE TABLE records_by_year SELECT year, COUNT(1) GROUP BY year
> INSERT OVERWRITE TABLE good_records_by_year SELECT year, COUNT(1) WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY year;
CREATE TABLE ... AS SELECT:新表表預先不存在
hive>CREATE TABLE target AS SELECT col1,col2 FROM source;
創建視圖:
hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;
查看視圖詳細信息:
hive> DESCRIBE EXTENDED valid_records;

閱讀全文

與hive查看資料庫相關的資料

熱點內容
ps入門必備文件 瀏覽:348
以前的相親網站怎麼沒有了 瀏覽:15
蘋果6耳機聽歌有滋滋聲 瀏覽:768
怎麼徹底刪除linux文件 瀏覽:379
編程中字體的顏色是什麼意思 瀏覽:534
網站關鍵詞多少個字元 瀏覽:917
匯川am系列用什麼編程 瀏覽:41
筆記本win10我的電腦在哪裡打開攝像頭 瀏覽:827
醫院單位基本工資去哪個app查詢 瀏覽:18
css源碼應該用什麼文件 瀏覽:915
編程ts是什麼意思呢 瀏覽:509
c盤cad佔用空間的文件 瀏覽:89
不銹鋼大小頭模具如何編程 瀏覽:972
什麼格式的配置文件比較主流 瀏覽:984
增加目錄word 瀏覽:5
提取不相鄰兩列數據如何做圖表 瀏覽:45
r9s支持的網路制式 瀏覽:633
什麼是提交事務的編程 瀏覽:237
win10打字卡住 瀏覽:774
linux普通用戶關機 瀏覽:114

友情鏈接