選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

將 S3 Select 與 Hive 搭配使用以提升效能 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 S3 Select 與 Hive 搭配使用以提升效能

重要

Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解

在 Amazon EMR 發行版本 5.18.0 及更新版本中,您可以將 S3 Select 與 Amazon EMR 上的 Hive 搭配使用。S3 Select 可讓應用程式從物件只擷取資料子集。針對 Amazon EMR,篩選大型資料集以進行處理的運算工作,會從叢集「下推」到 Amazon S3 處理,因而在某些應用程式中可提升效能,並減少 Amazon EMR 和 Amazon S3 之間傳輸的資料量。

以 CSV 和 JSON 檔案為基礎的 Hive 資料表,以及在 Hive 工作階段將 s3select.filter 組態變數設定為 true,可支援 S3 Select。如需詳細資訊和範例,請參閱 在您的程式碼中指定 S3 Select

S3 Select 是否適合我的應用程式?

建議您在使用和不使用 S3 Select 的狀態下,對應用程式進行基準分析,以確認其是否適合您的應用程式。

利用下列的準則,來判斷您的應用程式是否可能使用 S3 Select:

  • 您的查詢會篩選掉原始資料集一半以上的資料。

  • 您的查詢篩選條件述詞所使用的資料欄,具有 Amazon S3 Select 所支援的資料類型。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的資料類型

  • Amazon S3 與 Amazon EMR 叢集之間的網路連線具有良好的傳輸速度和可用頻寬。Amazon S3 不會壓縮 HTTP 回應,因此所壓縮輸入檔案的回應大小可能會增加。

考量與限制

  • 不支援使用客戶所提供加密金鑰 (SSE-C) 的 Amazon S3 伺服器端加密,也不支援用戶端加密。

  • 不支援 AllowQuotedRecordDelimiters 屬性。如果指定此屬性,查詢會失敗。

  • 僅支援採用 UTF-8 格式的 CSV 和 JSON 檔案。不支援多行 CSV 和 JSON。

  • 僅支援未壓縮的檔案,或 gzip 或 bzip2 檔案。

  • 不支援在最後一行的註解字元。

  • 不會處理檔案尾端的空白行。

  • Amazon EMR 上的 Hive 支援 S3 Select 所支援的基本資料類型。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的資料類型

在您的程式碼中指定 S3 Select

若要在 Hive 資料表中使用 S3 Select,請將 com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat 指定為 INPUTFORMAT 類別名稱,並使用 TBLPROPERTIES 子句,來指定 s3select.format 屬性的值,以建立資料表。

根據預設,在您執行查詢時會停用 S3 Select。在 Hive 工作階段期間,將 s3select.filter 設定為 true,以啟用 S3 Select,如下所示。下列的範例,示範如何在使用基礎的 CSV 和 JSON 檔案建立資料表時指定 S3 Select,然後利用簡單的選擇陳述式來查詢資料表。

範例 適用於 CSV 型資料表的 CREATE TABLE 陳述式
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/mycsvfile/' TBLPROPERTIES ( "s3select.format" = "csv", "s3select.headerInfo" = "ignore" );
範例 適用於 JSON 型資料表的 CREATE TABLE 陳述式
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/json/' TBLPROPERTIES ( "s3select.format" = "json" );
範例 SELECT TABLE 陳述式
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。