使用 Amazon S3 Select 篩選和擷取資料 - Amazon Simple Storage Service

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

使用 Amazon S3 Select 篩選和擷取資料

利用 Amazon S3 Select,您可以使用結構式查詢語言 (SQL) 陳述式篩選與擷取 Amazon S3 物件內容,取得您只需要的資料子集。藉由使用 Amazon S3 Select 篩選資料,您可以降低 Amazon S3 的傳輸量,減少成本和擷取資料的延遲。

Amazon S3 選取只允許您一次查詢一個物件。它適用於以 CSV,JSON 或Apache Parquet格式存儲的對象。它也適用於使用 GZIP 或 BZIP2 壓縮的物件 (僅適用於 CSV 和 JSON 物件),以及伺服器端加密物件。您也可以指定結果格式,CSV 或 JSON,決定您要如何分隔記錄結果。

您在要求中,傳遞 SQL 運算式給 Amazon S3。Amazon S3 Select 支援 SQL 的子集。關於由 Amazon S3 Select 所支援的 SQL 元素之詳細資訊,請參閱 適用於 Amazon S3 Select 的 SQL 參考

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、SelectObjectContent其餘 API 作業或 AWS 開發套件來執行 SQL 查詢。

注意

Amazon S3 主控台限制傳回資料檔流量為 40 MB。若要擷取更多資料,請使用 AWS CLI 或 API。

需求與限制

以下是使用 Amazon S3 Select 的需求:

  • 您必須擁有您正在查詢物件的 s3:GetObject 許可。

  • 如果要查詢的物件,使用客戶提供的加密金鑰 (SSE-C) 進行加密,您需使用 https,也必須在請求中提供加密金鑰。

以下是使用 Amazon S3 Select 時套用的限制:

  • S3 Select 每個請求只能查詢一個物件。

  • SQL 運算式字串的長度上限為 256 KB。

  • 輸入或結果記錄的長度上限為 1 MB。

  • Amazon S3 Select 只可使用 JSON 輸出格式發送巢狀資料。

  • 您無法查詢存放在 S3 Glacier 彈性擷取、S3 Glacier Deep Archive 或低冗餘儲存 (RRS) 儲存類別中的物件。您也無法查詢存放在 S3 智慧型分層封存存取層或 S3 智慧型分層深度存檔存取層中的物件。如需儲存體方案的詳細資訊,請參閱「使用 Amazon S3 儲存體方案」。

將 Amazon S3 選取與Parquet物件搭配使用時,會套用其他限制:

  • Amazon S3 Select 只支援使用 GZIP 或 Snappy 的單欄式壓縮。Amazon S3 選擇不支援物件的整個Parquet物件壓縮。

  • Amazon S3 Select 不支援 Parquet 輸出。您必須將輸出格式指定為 CSV 或 JSON。

  • 未壓縮的列群組大小上限為 512 MB。

  • 您必須使用物件結構描述中指定的資料類型。

  • 選取重複的欄位只會傳回最後一個值。

建構與要求

當您建構一項請求時,您需提供使用 InputSerialization 物件查詢的物件的詳細資訊。您提供使用 OutputSerialization 物件傳回結果的詳細資訊。也還包況括使用 Amazon S3 的 SQL 運算式,篩選要求。

如需建構 Amazon S3 Select 請求的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 SelectObjectContent。您也可以在以下章節中,看到其中一則 SDK 程式碼範例:

使用掃描範圍的要求

Amazon S3 Select 可讓您以指定要查詢的位元範圍方式掃描一個物件的子集。此功能可讓您透過將一系列非重疊掃描範圍的工作分割成個別 Amazon S3 Select 要求的方式,平行掃描整個物件。

掃描範圍不需要與記錄界線對齊。Amazon S3 Select 掃描範圍要求將在指定的位元範圍中執行。記錄如果在指定的掃描範圍中開始,但超出掃描範圍,則會由查詢處理。例如:以下內容顯示了一個 Amazon S3 物件,其中包含以行分隔的 CSV 格式的一系列記錄:

A,B C,D D,E E,F G,H I,J

假設您使用 Amazon S3 Select ScanRange 參數,並以 (位元) 1 開始,然後以 (位元) 4 結束。因此,掃描範圍會從「,」開始,然後掃描至從記錄結尾 C 為止。您的掃描範圍請求將返回結果 C, D,因為這是記錄的結尾。

Amazon S3 選取掃描範圍請求支援Parquet、CSV (不含加引號的分隔符號) 或 JSON 物件 (僅限LINES模式)。CSV 和 JSON 物件必須為未壓縮。如為行式 CSV 和 JSON 物件,當掃描範圍指定為 Amazon S3 Select 要求的一部分時,所有在掃描範圍內開始的記錄都會進行處理。如為 Parquet 物件,所有在請求的掃描範圍內開始的列群組都會進行處理。

Amazon S3 精選掃描範圍請求可與 Amazon S3 API 和 AWS 開發套件搭配使用。 AWS CLI您可以在此功能的 Amazon S3 Select 要求中使用 ScanRange 參數。如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 SelectObjectContent

錯誤

當 Amazon S3 Select 嘗試執行查詢且遇到問題時,會傳回錯誤代碼及其相關訊息。如需錯誤代碼和說明清單,請參閱 Amazon Simple Storage Service API 參考中,錯誤回應頁面的 SELECT 物件內容錯誤代碼清單一節。

如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。