HIve實現資料抽樣

2022-04-04 00:09:31 字數 569 閱讀 8739

1,

2,在大規模資料量的資料分析及建模任務中,往往針對全量資料進行挖掘分析時會十分耗時和占用集群資源,因此一般情況下只需要抽取一小部分資料進行分析及建模操作。hive提供了資料取樣(sampling)的功能,能夠根據一定的規則進行資料抽樣,目前支援資料塊抽樣,分桶抽樣和隨機抽樣,具體如下所示:

分桶抽樣

hive中分桶其實就是根據某乙個欄位hash取模,放入指定資料的桶中,比如將表table_1按照id分成100個桶,其演算法是hash(id) % 100,這樣,hash(id) % 100 = 0的資料被放到第乙個桶中,hash(id) % 100 = 1的記錄被放到第二個桶中。建立分桶表的關鍵語句為:cluster by語句。

分桶抽樣語法:

tablesample (bucket x out of y [on colname])

其中x是要抽樣的桶編號,桶編號從1開始,colname表示抽樣的列,y表示桶的數量。

例如:將表隨機分成10組,抽取其中的第乙個桶的資料

select * from table_01 tablesample(bucket 1 out of 10 on rand())

Hive 7 資料抽樣

當資料規模不斷膨脹時,我們需要找到乙個資料的子集來加快資料分析效率。因此我們就需要通過篩選和分析資料集為了進行模式 趨勢識別。目前來說有三種方式來進行抽樣 隨機抽樣,桶表抽樣,和塊抽樣。1 隨機抽樣 random sampling select from distribute by rand sor...

hive資料抽樣的方法

塊抽樣 block sampling hive 本身提供了抽樣函式,使用 tablesample 抽取指定的 行數 比例 大小,舉例 create table iteblog as select from iteblog1 tablesample 1000 rows create table ite...

Hive實現隨機抽樣(附詳解)

select from tab order by rand limit 1000select from select e.cast rand 100000 as int as idx from e t order by t.idx limit 1000表e為乙個存有資料普通表,我們要從表e中隨機抽出...