hive清空資料庫
㈠ Hive中怎樣強制刪除資料庫
insert overwrite table t_table1 select * from t_table1 where XXXX;
其中xxx是你需要保留的數據的查詢條件。
如果清空表,如下:
insert overwrite table t_table1 select * from t_table1 where 1=0;
㈡ hive中怎麼在當下資料庫操作另一個資料庫數據
可以使用Sqoop、DataX、或者Hive存儲過程來完成。搜索"lxw的大數據田地",裡面有很多關於Hive的文章,肯定能找到你想要的。
㈢ hive中怎麼刪除表中的部分數據
工具:(1)HIVE;
(2)電腦;
(3)Xshell;
採用hdfs命令進行刪除表中的部分數據:
1、先使用hdfs查看該表實際分區以及數據目錄位置
hdfs dfs -ls /user/hive/warehouse/tbdata.db/表名小寫/;
㈣ HIVE如何查看錶和資料庫
查看錶結構信息如下
1、descformattedtable_name;
2、desctable_name。
一、電腦常見問題
主板不啟動,開機無顯示,有顯卡報警聲。
故障原因:一般是顯卡松動或顯卡損壞。
處理辦法:打開機箱,把顯卡重新插好即可。要檢查AGP插槽內是否有小異物,否則會使顯卡不能插接到位;對於使用語音報警的主板,應仔細辨別語音提示的內容,再根據內容解決相應故障。
如果以上辦法處理後還報警,就可能是顯卡的晶元壞了,更換或修理顯卡。如果開機後聽到"嘀"的一聲自檢通過,顯示器正常但就是沒有圖像,把該顯卡插在其他主板上,使用正常,那就是顯卡與主板不兼容,應該更換顯卡。
㈤ Hive基礎之Hive是什麼以及Hive使用場景
Hive是什麼
1)Hive 是建立在Hadoop (HDFS/MR)上的用於管理和查詢結果化/非結構化的數據倉庫;
2)一種可以存儲、查詢和分析存儲在Hadoop 中的大規模數據的機制;
3)Hive 定義了簡單的類sql 查詢語言,稱為HQL,它允許熟悉SQL 的用戶查詢數據;
4)允許用Java開發自定義的函數UDF來處理內置無法完成的復雜的分析工作;
5)Hive沒有專門的數據格式(分隔符等可以自己靈活的設定);
ETL的流程(Extraction-Transformate-Loading):將關系型資料庫的數據抽取到HDFS上,hive作為數據倉庫,經過hive的計算分析後,將結果再導入到關系型資料庫的過程。
Hive是構建在Hadoop之上的數據倉庫
1)使用HQL作為查詢介面;
2)使用HDFS作為存儲;
3)使用MapRece作為計算;
Hive應用場景
數據源:
1)文件數據,如中國移動某設備每天產生大量固定格式的文件;
2)資料庫
以上兩種不同的數據源有個共同點:要使用hive,那麼必須要將數據放到hive中;通常採用如下兩種方式:
1)文件數據:load到hive
2)資料庫: sqoop到hive
數據的離線處理;
hive的執行延遲比較高,因為hive常用於數據分析的,對實時性要求不高;
hive優勢在於處理大數據,對於處理小數據沒有優勢,因為hive的執行延遲比較高。
處理數據存放在hive表中,那麼前台系統怎麼去訪問hive的數據呢?
先將hive的處理結果數據轉移到關系型資料庫中才可以,sqoop就是執行導入導出的操作
㈥ 為什麼使用HiveHive提供了什麼Hive支持哪些用戶
為什麼使用Hive?
為什麼使用Hive?那麼,在哪裡使用Hive呢?在載入了60億行(經度、維度、時間、數據值、高度)數據集到MySQL後,系統崩潰了,並經歷過數據丟失。這可能部分是因為我們最初的策略是將所有的數據都存儲到單一的一張表中了。後來,我們調整了策略通過數據集和參數進行分表,這有所幫助但也因此引入了額外的消耗,而這並非是我們願意接受的。
相反,我們決定嘗試使用Apache Hive技術。我們安裝了Hive 0.5 + 20,使用CDHv3和Apache Hadoop(0 20 2 + 320)。CDHv3還包含有許多其他相關工具,包括Sqoop和Hue這些在我們的架構中都標識出來了,如圖23-3底部所示。
我們使用Apache Sqoop轉儲數據到Hive中,然後通過寫一個Apache OODT包裝器,來使Hive按照空間/時間約束查詢數據,然後將結果提供給RCMET和其他用戶(圖23-2中間部分顯示)。RCMES集群的完整的架構如圖23- 3所示。我們有5台機器,包括圖中所示的一個主/從配置,通過一個運行GigE的私人網進行連接。
Hive提供了什麼
Photobucket公司使用Hive的主要目標是為業務功能、系統性能和用戶行為提供答案。為了滿足這些需求,我們每晚都要通過Flume從數百台伺服器上的MySQL資料庫中轉儲來自Web伺服器和自定義格式日誌TB級別的數據。這些數據有助於支持整個公司許多組織,比如行政管理、廣告、客戶支持、產品開發和操作,等等。對於歷史數據,我們保持所有MySQL在每月的第一天創建的所有的數據作為分區數據並保留30天以上的日誌文件。Photobucket使用一個定製的ETL框架來將MySQL資料庫中數據遷移到Hive中。使用Flume將日誌文件數據寫入到HDFS中並按照預定的Hive流程進行處理。
Hive支持的用戶有哪些
行政管理依賴於使用Hadoop提供一般業務健康狀況的報告。Hive允許我們解析結構化資料庫數據和非結構化的點擊流數據,以及業務所涉及的數據格式進行讀取。
廣告業務使用Hive篩選歷史數據來對廣告目標進行預測和定義配額。產品開發無疑是該組織中產生最大數量的特定的查詢的用戶了。對於任何用戶群,時間間隔變化或隨時間而變化。Hive是很重要的,因為它允許我們通過對在當前和歷史數據中運行A / B測試來判斷在一個快速變化的用戶環境中新產品的相關特性。
在Photobucket公司中,為我們的用戶提供一流的系統是最重要的目標。從操作的角度來看,Hive被用來匯總生成跨多個維度的數據。在公司里知道最流行的媒體、用戶、參考域是非常重要的。控制費用對於任何組織都是重要的。一個用戶可以快速消耗大量的系統資源,並顯著增加每月的支出。Hive可以用於識別和分析出這樣的惡意用戶,以確定哪些是符合我們的服務條款,而哪些是不符合的。也可以使用Hive對一些操作運行A / B測試來定義新的硬體需求和生成ROI計算。Hive將用戶從底層MapRece代碼解放出來的能力意味著可以在幾個小時或幾天內就可以獲得答案,而不是之前的數周。
Hive中的資料庫
Hive中資料庫的概念本質上僅僅是表的一個目錄或者命名空間。然而,對於具有很多組和用戶的大集群來說,這是非常有用的,因為這樣可以避免表命名沖突。通常會使用資料庫來將生產表組織成邏輯組。
如果用戶沒有顯式指定資料庫,那麼將會使用默認的資料庫default。
下面這個例子就展示了如何創建一個資料庫:
hive> CREATE DATABASE financials;
如果資料庫financials已經存在的話,那麼將會拋出一個錯誤信息。使用如下語句可以避免在這種情況下拋出錯誤信息:
hive> CREATE DATABASE IF NOT EXISTS financials;
雖然通常情況下用戶還是期望在同名資料庫已經存在的情況下能夠拋出警告信息的,但是IF NOT EXISTS這個子句對於那些在繼續執行之前需要根據需要實時創建資料庫的情況來說是非常有用的。
在所有的資料庫相關的命令中,都可以使用SCHEMA這個關鍵字來替代關鍵字TABLE。
隨時可以通過如下命令方式查看Hive中所包含的資料庫:
hive> SHOW DATABASES;
default
financials
hive> CREATE DATABASE human_resources;
hive> SHOW DATABASES;
default
financials
human_resources
如果資料庫非常多的話,那麼可以使用正則表達式匹配來篩選出需要的資料庫名,正則表達式這個概念,將會在第6.2.3節「Like和RLike」介紹。下面這個例子展示的是列舉出所有以字母h開頭,以其他字元結尾(即.*部分含義)的資料庫名:
hive> SHOW DATABASES LIKE 'h.*';
human_resources
hive> ...
Hive會為每個資料庫創建一個目錄。資料庫中的表將會以這個資料庫目錄的子目錄形式存儲。有一個例外就是default資料庫中的表,因為這個資料庫本身沒有自己的目錄。
資料庫所在的目錄位於屬性hive.metastore.warehouse.dir所指定的頂層目錄之後,這個配置項我們已經在前面的第2.5.1節「本地模式配置」和第2.5.2節「分布式模式和偽分布式模式配置」中進行了介紹。假設用戶使用的是這個配置項默認的配置,也就是/user/hive/warehouse,那麼當我們創建資料庫financials時,Hive將會對應地創建一個目錄/user/hive/warehouse/financials.db。這里請注意,資料庫的文件目錄名是以.db結尾的。
用戶可以通過如下的命令來修改這個默認的位置:
hive> CREATE DATABASE financials
> LOCATION '/my/preferred/directory';
用戶也可以為這個資料庫增加一個描述信息,這樣通過DESCRIBE DATABASE <database> 命令就可以查看到該信息。
hive> CREATE DATABASE financials
> COMMENT 'Holds all financial tables';
hive> DESCRIBE DATABASE financials;
financials Holds all financial tables
hdfs://master-server/user/hive/warehouse/financials.db
從上面的例子中,我們可以注意到,DESCRIEB DATABASE語句也會顯示出這個資料庫所在的文件目錄位置路徑。在這個例子中,URI格式是hdfs。如果安裝的是MapR,那麼這里就應該是maprfs。對於亞馬遜彈性MapRece(EMR)集群,這里應該是hdfs,但是用戶可以設置hive.metastore.warehouse.dir為亞馬遜S3特定的格式(例如,屬性值設置為s3n://bucketname...)。用戶可以使用s3作為模式,但是如果使用新版的規則s3n會更好。
前面DESCRIBE DATABASE語句的輸出中,我們使用了master-server來代表URI許可權,也就是說應該是由文件系統的「主節點」(例如,HDFS中運行NameNode服務的那台伺服器)的伺服器名加上一個可選的埠號構成的(例如,伺服器名:埠號這樣的格式)。如果用戶執行的是偽分布式模式,那麼主節點伺服器名稱就應該是localhost。對於本地模式,這個路徑應該是一個本地路徑,例如file:///user/hive/warehouse/financials.db。
如果這部分信息省略了,那麼Hive將會使用Hadoop配置文件中的配置項fs.default.name作為master-server所對應的伺服器名和埠號,這個配置文件可以在$HADOOP_HOME/conf這個目錄下找到。
需要明確的是,hdfs:///user/hive/warehouse/financials.db和hdfs://master-server/user/hive/
warehouse/financials.db是等價的,其中master-server是主節點的DNS名和可選的埠號。
為了保持完整性,當用戶指定一個相對路徑(例如,some/relative/path)時,對於HDFS和Hive,都會將這個相對路徑放到分布式文件系統的指定根目錄下(例如,hdfs:///user/<user-name>)。然而,如果用戶是在本地模式下執行的話,那麼當前的本地工作目錄將是some/relative/path的父目錄。
為了腳本的可移植性,通常會省略掉那個伺服器和埠號信息,而只有在涉及到另一個分布式文件系統實例(包括S3存儲)的時候才會指明該信息。
此外,用戶還可以為資料庫增加一些和其相關的鍵-值對屬性信息,盡管目前僅有的功能就是提供了一種可以通過DESCRIBE DATABASE EXTENDED <database>語句顯示出這些信息的方式:
hive> CREATE DATABASE financials
> WITH DBPROPERTIES ('creator' = 'Mark Moneybags', 'date' = '2012-01-02');
hive> DESCRIBE DATABASE financials;
financials hdfs://master-server/user/hive/warehouse/financials.db
hive> DESCRIBE DATABASE EXTENDED financials;
financials hdfs://master-server/user/hive/warehouse/financials.db
{date=2012-01-02, creator=Mark Moneybags);
USE命令用於將某個資料庫設置為用戶當前的工作資料庫,和在文件系統中切換工作目錄是一個概念:
hive> USE financials;
現在,使用像SHOW TABLES這樣的命令就會顯示當前這個資料庫下所有的表。
不幸的是,並沒有一個命令可以讓用戶查看當前所在的是哪個資料庫!幸運的是,在Hive中是可以重復使用USE…命令的,這是因為在Hive中並沒有嵌套資料庫的概念。
可以回想下,在第2.7.2節「變數和屬性」中提到過,可以通過設置一個屬性值來在提示符裡面顯示當前所在的資料庫(Hive v0.8.0版本以及之後的版本才支持此功能):
hive> set hive.cli.print.current.db=true;
hive (financials)> USE default;
hive (default)> set hive.cli.print.current.db=false;
hive> ...
最後,用戶可以刪除資料庫:
hive> DROP DATABASE IF EXISTS financials;
IF EXISTS子句是可選的,如果加了這個子句,就可以避免因資料庫finanacials不存在而拋出警告信息。
默認情況下,Hive是不允許用戶刪除一個包含有表的資料庫的。用戶要麼先刪除資料庫中的表,然後再刪除資料庫;要麼在刪除命令的最後面加上關鍵字CASCADE,這樣可以使Hive自行先刪除資料庫中的表:
hive> DROP DATABASE IF EXISTS financials CASCADE;
如果使用的是RESTRICT這個關鍵字而不是CASCADE這個關鍵字的話,那麼就和默認情況一樣,也就是,如果想刪除資料庫,那麼必須先要刪除掉該資料庫中的所有表。
如果某個資料庫被刪除了,那麼其對應的目錄也同時會被刪除。
㈦ 資料庫DDL操作
創建庫
create databases if not exists 庫名;
刪除庫
drop databases 庫名 restrict; restrict 默認關鍵字(可不寫)只能刪除空庫,里邊沒有表的;
drop databases if exists 庫名
drop databases 庫名 cascade; cascade強制刪除
查看庫的列表信息
show databases;
使用庫
use databases;
查看正在使用的庫
select current_databases();
查看庫信息
desc databases 庫名;
可使用模糊查詢 show databases 庫名 like 'my%'
修改庫
基本不用
創建表示例(hive sql)
create [external] table [if not exists] table_name (clo_name type comment "欄位描述") comment '表描述'
[partitioned by (col_name type [comment '描述'])]
[clustered by (col_name,col_name,...)]
[sorted by (col_name [asc|desc],...)into num_buckets buskets]
[row format row_format]
[stored as file_format]
[location hdfs_path]
關鍵字講解如下:
1)external 關鍵字:是否創建外部表,不加時是創建內部表,加上external關鍵字創建的是外部表
2)partitioned by (col_name type [comment '描述']):指定分區欄位
分區表存的是不同的目錄
分區表在添加數據之前先添加分區
alter table table_name add if not exists partition(col_name ='一個分區')
3)clustered by (col_name,col_name,...)指定分桶欄位clustered by
sorted by (col_name [asc|desc],...) into num_buckets buskets 指定排序欄位
排序規則指定的是在同一個分桶內的排序規則
into num_buckets buskets;指定分桶個數num_buckets
判斷依據:根據建表語句模板欄位後邊是否跟type類型,因為一個欄位在建表語句中不會建兩次
4)[row format row_format] 指定分隔符
delimited fields terminated by '' 指定列分隔符
lines terminated by '' 指定行分隔符
5)[stored as file_format] 指定最終表數據的存儲格式
textfile 文本格式 默認的格式
rcfile 行列結合的格式
parquet 壓縮格式
6)[location hdfs_path] 指定hive 上表的hdfs上的存儲路徑
不指定的話,存儲在配置的路徑下
沒指定沒配置,默認在 /user /hive /warehouse
復製表,復製表結構不復制數據
create table t1 like t2;
查看錶
show tables;
show tables in 庫名;
show tables like 's%';
查看錶信息
desc 表名:顯示表欄位
desc extended 表名:顯示表的詳細信息(由左至右,連續在一起)
desc formatted 表名:格式化顯示表的詳細信息(規整的,一行一行的)
刪除表
drop table if exists 表名;
清空表
truncate table 表名;清空表中的數據,保留表結構
修改表 alter
修改表名稱
alter table 表名 rename to 新表名;
修改表欄位信息
1)添加欄位
alter table 表名 add columns (col_name type,col_name type);
所有新的欄位一定要指定類型
2)修改欄位,修改欄位類型
alter table 表名 chage 原始欄位 新欄位 新欄位類型;
string 類型相當於數值類型屬於大類型
hive1.2.2中沒有限制,各種類型之間都可以進行修改
3)替換列
alter table table_name replacr columns (in int,name string);由原始表全部欄位替換成兩個
修改表分區信息
1)添加分區
alter table table_name add if not exists partition(city='beijing')
添加分區的過程中,還可以指定分區的存儲路徑
alter table table_name add if not exists partition(city='beijing') location '/user/beijing'
2)修改分區 修改分區的存儲路徑
alter table table_name set partition(city='shenzhen') location '/user/shenzhen'
3)刪除分區
alter table table_name drop if exists partition(city='beijing')
查看分區信息,針對分區表
show partitions table_name;
show partitions table_name partiton(city='beijing')
DDL和DML操作如下
https://blog.csdn.net/u010082526/article/details/89087286?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-89087286.nonecase
㈧ hive中怎麼刪除表中的部分數據
Hive的數據管理:
(1)元數據存儲
Hive 將元數據存儲在 RDBMS 中,有三種模式可以連接到資料庫:
Single User Mode:此模式連接到一個 In-memory 的資料庫 Derby,一般用於 Unit Test。
Multi User Mode:通過網路連接到一個資料庫中,這是最常用的模式。
Remote Server Mode:用於非 Java 客戶端訪問元資料庫,在伺服器端啟動一個 MetaStoreServer,客戶端則利用 Thrift 協議通過 MetaStoreServer來訪問元資料庫。
(2)數據存儲
首先,Hive 沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由地組織 Hive 中的表,只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,它就可以解析數據了。
其次,Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含4種數據模型:Table、External Table、Partition、Bucket。
Hive 中的 Table 和資料庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄來存儲數據。例如,一個表 pvs,它在 HDFS 中的路徑為:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數據倉庫的目錄,所有的 Table 數據(不包括 External Table)都保存在這個目錄中。
Partition 對應於資料庫中Partition 列的密集索引,但是 Hive 中 Partition 的組織方式與資料庫中的很不相同。在 Hive 中,表中的一個 Partition 對應於表下的一個目錄,所有的 Partition 數據都存儲在對應的目錄中。例如:pvs 表中包含 ds 和 city 兩個 Partition,則對應於 ds = 20090801, city = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=US;對應於 ds = 20090801, city = CA 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=CA。
Buckets 對指定列計算 hash,根據 hash 值切分數據,目的是為了便於並行,每一個 Buckets對應一個文件。將 user 列分散至 32 個Bucket上,首先對 user 列的值計算 hash,比如,對應 hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00000;對應hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00020。
External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition。它和 Table 在元數據的組織結構上是相同的,而在實際數據的存儲上則有較大的差異。
在Table 的創建過程和數據載入過程(這兩個過程可以在同一個語句中完成)中,實際數據會被移動到數據倉庫目錄中。之後對數據的訪問將會直接在數據倉庫的目錄中完成。刪除表時,表中的數據和元數據將會被同時刪除。
External Table 只有一個過程,因為載入數據和創建表是同時完成的。實際數據是存儲在 Location 後面指定的 HDFS 路徑中的,它並不會移動到數據倉庫目錄中。
(3)數據交換
數據交換主要分為以下幾個部分
用戶介面:包括客戶端、Web界面和資料庫介面。
元數據存儲:通常是存儲在關系資料庫中的,如MySQL、Derby等。
解釋器、編譯器、優化器、執行器。
Hadoop:用 HDFS進行存儲,利用 MapRece 進行計算。
用戶介面主要有三個:客戶端、資料庫介面和Web界面,其中最常用的是客戶端。Client 是 Hive 的客戶端,當啟動 Client 模式時,用戶會想要連接Hive Server,這時需要指出 Hive Server 所在的節點,並且在該節點啟動 Hive Server。Web界面是通過瀏覽器訪問 Hive的。
Hive 將元數據存儲在資料庫中,如 MySQL、Derby中。Hive 中的元數據包括表的名字、表的列和分區及其屬性、表的屬性(是否為外部表等)、表數據所在的目錄等。
解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化到查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,並在隨後由 MapRece調用執行。
Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapRece 完成(包含 * 的查詢不會生成 MapRedcue 任務,比如 select * from tbl)。
以上從Hadoop的分布式文件系統HDFS、分布式資料庫HBase和數據倉庫工具Hive入手介紹了Hadoop的數據管理,它們都通過自己的數據定義、體系結構實現了數據從宏觀到微觀的立體化管理,完成了Hadoop平台上大規模的數據存儲和任務處理