Leo Yeh's Blog

SAS 資料管理 (5)

教學目標

初步了解 SAS 平台中使用 Hive 進行資料管理的基本概念。

重點概念

首先 Hive 資料表主要定義如何讀取和寫入儲存在 HDFS 中的檔案。在傳統資料中主要是定義和控制儲存格式,也就是 Schema on Write,但是在 Hive 則主要是解譯儲存在 HDFS 多元檔案格式的結構,也就是 Schema on Read,請注意這些檔案除了是由 Hive 所建立之外,也可能是由其它應用程式所建立。

接著我們在 SAS 平台中使用 Hive 介面除了透過 SELECT 敘述查詢資料之外,還能夠透過 EXECUTE 敘述執行資料定義語言 (Data Definition Language,DDL),其主要是定義和管理資料表結構,也就是在 HiveQL 中使用 CREATE TABLE、DROP TABLE 和 ALTER TABLE。

EXECUTE 敘述範例

1
2
3
4
5
6
PROC SQL;
CONNECTION TO HADOOP (連線選項);
EXECUTE (資料定義語言敘述式)
BY Hadoop;
DISCONNECT FROM HADOOP;
QUIT;

其中在資料定義語言敘述式中我們還能夠透過 LOCATION 定義 HDFS 資料夾儲存資料的位置,透過 FIELDS TERMINATED BY 定義欄位分隔符號,以及透過 STORED AS TEXTFILE 定義儲存格式為文字檔。

再來我們主要有三種方式載入資料至 HDFS 中,請參考下表。

方法 說明
SAS FILENAME 敘述式 主要應用於小檔案和使用 DATA STEP 處理資料。
PROC HADOOP COPYFROMLOCAL 主要應用於大檔案。
HiveQL LOAD DATA LOCAL INPATH “檔案路徑” 主要應用於初始化增加資料、覆寫資料或新增資料。

最後 Hive 資料表主要有兩種類型,分別為內部 (Managed) 和外部 (External)。所謂內部資料表主要是由 Hive 控管在 HDFS 中資料的生命週期,並且當資料表被刪除時,則在 HDFS 中關聯的資料就會被刪除,我們會透過 CREATE TABLE 敘述式建立內部資料表。所謂外部資料表主要是 Hive 無法控管在 HDFS 中資料的生命週期,並且當資料表被刪除時,則在 HDFS 中關聯的資料就會不會被刪除,我們會透過 CREATE EXTERNAL TABLE 敘述式建立外部資料表,並且必須指定 LOCATION 路徑。至於為何會使用外部資料表主要原因,分別為:
原因如下:

  1. 我們將會需要其它應用程式使用該資料表。
  2. 我們將會需要在資料表被刪除之後維護資料的檔案。
  3. 我們將會定義多個 Hive 以不同方式讀取相同的資料內容。

總結在 Hive 中的資料表主要有內部資料表和外部資料表,並且我們將會透過 HiveQL 中的EXECUTE 敘述進行資料表的定義。

相關資源

⬅️ Go back