本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon S3 Select 查詢現有資料
重要
Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解
透過 Amazon S3 Select,您可以使用結構化查詢語言 (SQL) 陳述式來篩選 Amazon S3 物件的內容,並僅擷取您需要的資料子集。藉由使用 Amazon S3 Select 篩選資料,您可以降低 Amazon S3 的傳輸量,減少成本和擷取資料的延遲。
Amazon S3 Select 僅允許您一次查詢一個物件。它適用於存放在 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)、REST API 操作或 AWS SDKs SelectObjectContent
來執行 Word 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 Flexible Retrieval、S3 Glacier Deep Archive 或降低備援儲存 (RRS) 儲存類別中的物件。您也無法查詢存放在 S3 Intelligent-Tiering Archive Access 層或 S3 Intelligent-Tiering Deep Archive Access 層中的物件。如需儲存體方案的詳細資訊,請參閱「了解和管理 Amazon S3 儲存類別」。
搭配 使用 Amazon S3 Select 時,適用其他限制 Parquet 物件:
-
Amazon S3 Select 僅支援使用 GZIP 或 的單欄式壓縮 Snappy。 Amazon S3 Select 不支援整個物件壓縮 Parquet 物件。
-
Amazon S3 Select 不支援 Parquet 輸出。您必須將輸出格式指定為 CSV 或 JSON。
-
未壓縮的列群組大小上限為 512 MB。
-
您必須使用物件結構描述中指定的資料類型。
-
選取重複的欄位只會傳回最後一個值。
建構與要求
當您建構一項請求時,您需提供使用 InputSerialization
物件查詢的物件的詳細資訊。您提供使用 OutputSerialization
物件傳回結果的詳細資訊。您也可以包含 Amazon S3 用來篩選請求的 SQL 表達式。
如需建構 Amazon S3 Select 請求的詳細資訊,請參閱 SelectObjectContent 在 Amazon Simple Storage Service API 參考中。您也可以在下列各節中查看其中一個 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 Select 掃描範圍請求支援 Parquet、CSV (不含引號分隔符號) 或 JSON 物件 (僅限 LINES
模式)。CSV 和 JSON 物件必須解壓縮。對於行型 CSV 和 JSON 物件,當掃描範圍指定為 Amazon S3 Select 請求的一部分時,所有在掃描範圍內開始的記錄都會進行處理。用於 Parquet 物件,會在請求的掃描範圍內開始的所有資料列群組都會進行處理。
Amazon S3 Select 掃描範圍請求可與 AWS CLI、Amazon S3 API 和 AWS SDKs 搭配使用。您可以在此功能的 Amazon S3 Select 要求中使用 ScanRange
參數。如需詳細資訊,請參閱 SelectObjectContent 在 Amazon Simple Storage Service API 參考中。
錯誤
當 Amazon S3 Select 嘗試執行查詢且遇到問題時,會傳回錯誤代碼及其相關訊息。如需錯誤代碼和描述的清單,請參閱 Amazon Simple Storage Service SELECT 參考中的錯誤回應頁面的 Word 物件內容錯誤代碼清單一節。 API
如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。