本文介紹Hive如何以EMR叢集的方式處理OSS-HDFS服務中的資料。
前提條件
已建立EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的叢集,並在建立叢集時選擇了Hive服務。具體步驟,請參見建立叢集。
已開通並授權訪問OSS-HDFS服務。具體操作,請參見開通OSS-HDFS服務。
操作步驟
-
登入EMR on ECS控制台,建立EMR叢集。
建立EMR叢集時,確保選擇的产品版本為EMR-3.46.2及以上版本或者EMR-5.12.2及以上版本,集群存储根路径選擇已開通OSS-HDFS服務的Bucket,其他參數保留預設配置。具體步驟,請參見建立叢集。
在終端使用以下命令串連Hive。
更多串連方式,請參見Hive串連方式。
hive在終端使用以下命令串連Hive。
更多串連方式,請參見Hive串連方式。
hive為已有表添加分區。
您可以為已建立的表添加分區,從而將其分成較小的儲存單元。根據查詢條件,只掃描滿足條件的分區而避免全表掃描,從而顯著提升查詢效能。
命令格式
ALTER TABLE <table_name> ADD [IF NOT EXISTS] PARTITION <pt_spec> [PARTITION <pt_spec> PARTITION <pt_spec>...] LOCATION 'location';參數說明如下:
參數
是否可選
說明
table_name
必選
待添加分區的表名稱。
IF NOT EXISTS
可選
未指定IF NOT EXISTS時,如果同名的分區已存在,會執行失敗並返回報錯。
pt_spec
必選
新增的分區,格式為
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)。其中,partition_col表示分區欄位,partition_col_value表示分區值。分區欄位不區分大小寫,分區值區分大小寫。location
必選
指定儲存分區的OSS路徑。
使用樣本
以下樣本用於為表sale_detail添加一個分區,用於儲存2021年12月華東1(杭州)地區的銷售記錄,並將分區儲存於指定的OSS路徑。
ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='202112', region='hangzhou') LOCATION 'oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/path/2021/';