分桶的乙個主要優勢就是資料抽樣,主要有兩種方式:
1)基於桶抽樣 2)基於百分比抽樣
1)基於桶抽樣:select * frombucketed_users
tablesample(bucket 1 out of 4 on id);
桶的個數從1開始計數。因此,前面的查詢從4個桶的第乙個中獲取所有的使用者。
對於乙個大規模的、均勻分布的資料集,這會返回表中約四分之一的資料行。
我們 也可以用其他比例對若干個桶進行取樣(因為取樣並不是乙個精確的操作,
因此這個 比例不一定要是桶數的整數倍)
tablesample是抽樣語句,語法:tablesample(bucket x outof y)
y必須是table總bucket數的倍數或者因子。hive根據y的大小,決定抽樣
的比例。例如,table總共分了64份,當y=32時,抽取(64/32=)2個bucket的資料,
當y=128時,抽取(64/128=)1/2個bucket的資料。
x表示從哪個bucket開始抽取。例如,table總bucket數為32,
tablesample(bucket 3 out of 16),表示總共抽取(32/16=)2個bucket的資料,
分別為第3個bucket和第(3+16=)19個bucket的資料
2)基於百分比抽樣:hive另外一種按照抽樣百分比進行抽樣的方式,該種方式
基於行數,按照輸入路徑下的資料塊的百分比進行抽樣。這種抽樣的最小單元
是乙個hdfs資料塊,如果表的資料大小小於普通塊大小128m,將返回所有行
資料分桶存在的一些缺陷:
如果通過資料檔案load 到分桶表中,會存在額外的mr負擔。實際生產中分桶策略使用頻率較低,更常見的還是使用資料分割槽
基於百分比的抽樣方式提供了乙個變數,用於控制基於資料塊的調優種子資訊
hive.sample.seednumber設為0
1 大資料 hive概述
1 hive是乙個構建在hadoop上的資料倉儲框架 2 乙個hive的二進位製包可以在多個版本的hadoop上工作 3 hive使用環境變數 hadoop home來指定hadoop的所有相關jar包和配置檔案 4 把sql查詢轉換為一系列在hadoop集群上執行的作業。hive的本質是將sql語...
31 大資料 hive 刪除庫
語法 drop database dbname drop database if exists dbname 預設情況,hive 不允許刪除包含表的資料庫,兩種辦法 1 手動刪除庫下所有表,然後刪除庫 2 使用 cascade 關鍵字 drop database if exists dbname c...
8 大資料 hive資料模型
1 database 在hdfs中表現為 目錄下乙個資料夾 2 table 在hdfs中表現所屬database目錄下乙個資料夾 3 temporary table 臨時分析,關閉hive客戶端後,臨時表就會消失。主要用於儲存不重要中間結果集,不重要的表。臨時表不會建立hdfs資料夾 create ...