本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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)、 SelectObjectContent
REST API 操作或 AWS SDKs來執行 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 儲存類別」。
搭配 Parquet 物件使用 Amazon S3 Select 時,會有額外的限制:
-
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 請求的詳細資訊,請參閱《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 Select 掃描範圍請求支援 Parquet、CSV (不含引號分隔符號) 或 JSON 物件 (僅 LINES
模式)。CSV 和 JSON 物件必須為未壓縮。如為行式 CSV 和 JSON 物件,當掃描範圍指定為 Amazon S3 Select 要求的一部分時,所有在掃描範圍內開始的記錄都會進行處理。如為 Parquet 物件,所有在請求的掃描範圍內開始的列群組都會進行處理。
Amazon S3 Select 掃描範圍請求可與 、Amazon S3 API AWS CLI和 AWS SDKs 搭配使用。您可以在此功能的 Amazon S3 Select 要求中使用 ScanRange
參數。如需詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的 SelectObjectContent。
錯誤
當 Amazon S3 Select 嘗試執行查詢且遇到問題時,會傳回錯誤代碼及其相關訊息。如需錯誤代碼和說明清單,請參閱 Amazon Simple Storage Service API 參考中,錯誤回應頁面的 SELECT 物件內容錯誤代碼清單一節。
如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。