當前位置:首頁 » 服務存儲 » hive常用列式存儲格式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

hive常用列式存儲格式

發布時間: 2022-07-03 16:52:18

① 基於hadoop的hive處理數據的格式有沒有要求

hadoop的hive 處理數據的格式 沒什麼要求 只對 結構有要求 必須是結構化數據才能 用hive處理 如果是非結構化 或者 半結構化的 要用 hbase 來處理

② 怎樣修改hive存儲格式為snappy格式

你輸入sqoop
import
的目錄在哪裡?如果在/usr/sqoop下輸入的命令,那麼在/usr/sqoop下輸入hive登入,然後show
tables查看。
你輸入sqoop
import
的目錄在哪裡?如果在/usr/sqoop下輸入的命令,那麼在/usr/sqoop下輸入hive登入,然後show
tables查看。
hive
0.13以後自帶支持。

③ hive中datetime數據格式,是否能直接儲存帶時區的數據

HIVE里有兩種時間類型:DATE類和TIMESTAMP類
DATE類保存形如『2017-05-05 00:00:00.000』這種數據, TIMESTAMP保存的是一個10位的整數, 即UNIX系統下的時間戳記法。可以通過from_unixtime()和unix_timestamp()函數互相轉換。
當然你也可以直接存成string格式。

④ hive表的類型有哪些

Hive 的表有哪些類型呢,我們簡單可以分為四種,受控表、外部表、分區表、桶表,從嚴格意義上說,應該分為兩種受控表,又叫內部表、外部表,分區表和桶表其實是受控表的不同體現。

1、受控表

所謂受控表,我們也經常叫內部表,和外部表對應起來,就是說表的數據的生命周期收表的控制,當表定義被刪除的時候,表中的數據隨之一並被刪除。創建一張表,其對應在hive中就有了表記錄,在metastore表TBLS中就有表定義,當我們一旦從hive中刪除一張表的定義之後,其表中的數據也就不復存在了,在metastore中的定義也就不存在了。

2、外部表

和受控表相對的,怎麼相對呢,你的內部表的數據的生命周期受表定義的影響不是,外部表的不是這樣的,數據的生命周期, 或者說數據存在與否和表的定義互不約束,表中的數據呢,只是表對hdfs上相應文件的一個引用而已,當刪除表定義的時候,表中的數據依然存在。
3、分區表

假設伺服器集群每天都產生一個日誌數據文件,把數據文件統一存儲到HDFS中。我們如果想查詢某一天的數據的話,hive執行的時候會對所有文件都掃描一遍,判斷是否是指定的日期。可以讓日期作為一個子目錄。當hive查詢的時候,根據日期去判斷子目錄。然後掃描符合條件的子目錄中的數據文件。

4、桶表

桶表是對數據進行哈希取值,然後放到不同文件中存儲。分桶是將數據及分解成更容易管理的若幹部分的另一種技術。如果進行表連接操作,那麼就需要對兩張表的數據進行全掃描。非常耗費時間。可以針對連接欄位進行優化。分桶這種情況下呢,對於相似的表中的數據進行比較的話就非常的方便了,只要對比相應的桶中的數據就可了。

⑤ hive能存儲數據嗎

能,hive的存儲位置是HDFS

⑥ hive 中的壓縮格式 rcfile,textfile,sequencefile 各有什麼區別

TextFile:
Hive默認格式,數據不做壓縮,磁碟開銷大,數據解析開銷大。
可結合Gzip、Bzip2、Snappy等使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對數據進行切分,從而無法對數據進行並行操作。

⑦ 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文件存儲格式包括以下幾類:

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的數據存儲

首先,Hive 沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由的組織 Hive 中的表,只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。
其次,Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含以下數據模型:表(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, ctry = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/ctry=US;對應於 ds = 20090801, ctry = CA 的 HDFS 子目錄為;/wh/pvs/ds=20090801/ctry=CA
Buckets 對指定列計算 hash,根據 hash 值切分數據,目的是為了並行,每一個 Bucket 對應一個文件。將 user 列分散至 32 個 bucket,首先對 user 列的值計算 hash,對應 hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/ctry=US/part-00000;hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/ctry=US/part-00020
External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition。它和 Table 在元數據的組織上是相同的,而實際數據的存儲則有較大的差異。
Table 的創建過程和數據載入過程(這兩個過程可以在同一個語句中完成),在載入數據的過程中,實際數據會被移動到數據倉庫目錄中;之後對數據對訪問將會直接在數據倉庫目錄中完成。刪除表時,表中的數據和元數據將會被同時刪除。 External Table 只有一個過程,載入數據和創建表同時完成(CREATE EXTERNAL TABLE ……LOCATION),實際數據是存儲在 LOCATION 後面指定的 HDFS 路徑中,並不會移動到數據倉庫目錄中。當刪除一個 External Table 時,僅刪除元數據,表中的數據不會真正被刪除。