『壹』 大數據Hive倉庫是什麼
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射成一張表,並提供類sql查詢功能;其本質是將HQL轉化成MapRece程序。
構建在Hadoop之上的數據倉庫:
使用HQL作為查詢介面
使用HDFS存儲
使用MapRece計算
靈活性和擴展性比較好:支持UDF,自定義存儲格式等:
適合離線數據處理
『貳』 hive的幾種文件格式
hive文件存儲格式包括以下幾類:
1、TEXTFILE
2、SEQUENCEFILE
3、RCFILE
4、ORCFILE(0.11以後出現)
其中TEXTFILE為默認格式,建表時不指定默認為這個格式,導入數據時會直接把數據文件拷貝到hdfs上不進行處理;
SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接從本地文件導入數據,數據要先導入到textfile格式的表中, 然後再從表中用insert導入SequenceFile,RCFile,ORCFile表中。
前提創建環境:
hive 0.8
創建一張testfile_table表,格式為textfile。
create table if not exists testfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by ' ' stored as textfile;
load data local inpath '/app/weibo.txt' overwrite into table textfile_table;
一、TEXTFILE
默認格式,數據不做壓縮,磁碟開銷大,數據解析開銷大。
可結合Gzip、Bzip2使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對數據進行切分,
從而無法對數據進行並行操作。
示例:
總結:
相比TEXTFILE和SEQUENCEFILE,RCFILE由於列式存儲方式,數據載入時性能消耗較大,但是具有較好的壓縮比和查詢響應。數據倉庫的特點是一次寫入、多次讀取,因此,整體來看,RCFILE相比其餘兩種格式具有較明顯的優勢。
『叄』 hive和mysql的區別是什麼
hive和mysql的區別有:
1、查詢語言不同:hive是hql語言,mysql是sql語句;
2、數據存儲位置不同:hive是把數據存儲在hdfs上,而mysql數據是存儲在自己的系統中;
3、數據格式:hive數據格式可以用戶自定義,mysql有自己的系統定義格式;
4、數據更新:hive不支持數據更新,只可以讀,不可以寫,而sql支持數據更新;
5、索引:hive沒有索引,因此查詢數據的時候是通過maprece很暴力的把數據都查詢一遍,也造成了hive查詢數據速度很慢的原因,而mysql有索引。
『肆』 什麼是hive分區
Hive的分區方式:由於Hive實際是存儲在HDFS上的抽象,Hive的一個分區名對應一個目錄名,子分區名就是子目錄名,並不是一個實際欄位。按照數據表的某列或某些列分為多個區,區從形式上是文件夾(HDFS里的文件夾)
『伍』 hive分桶表的儲存格式是什麼固定的還是可以隨意指定
對於每一個表或者是分區,Hive可以進一步組織成桶,也就是說桶是更為細粒度的數據范圍劃分。Hive是針對某一列進行分桶。Hive採用對列值哈希,然後除以桶的個數求余的方式決定該條記錄存放在哪個桶中。分桶的好處是可以獲得更高的查詢處理效率。使取樣更高效
hive表數據是在hdfs中儲存的並沒有固定的儲存格式,hive只保存管理表元數據。
桶就是將數據表由一個文件存儲分為多個文件存儲
分桶語法:
create table t_buck(id string,name string)
clustered by (id) into 4 buckets;
指定了根據id分成4個桶,最好的導入數據方式是insert into table.
要開啟模式開關
set hive.enforce.bucketing = true;
set maprece.job.reces=4;
查詢時cluster by指定的欄位就是partition時分區的key
『陸』 分布式環境下hive的外部表是如何存儲的
第一、hive本身是不存儲數據的,不論外表、內表,hive的所有數據是存放在hdfs文件系統的。
第二、基於上面,你的問題就轉變為hdfs的文件是如何存儲的了,hdfs的文件是以塊block存儲的,每個塊分布在多台機器上面,每個塊的信息以及存放路徑則存放在nameNode節點的元數據里邊。
『柒』 hive 的元數據存儲在 derby 和 mysql 中有什麼區別
定義 元數據最本質、最抽象的定義為:data about data (關於數據的數據)。它是一種廣泛存在的現象,在許多領域有其具體的定義和應用。 在數據倉庫領域中,元數據被定義為:描述數據及其環境的數據。一般來說,它有兩方面的用途。