本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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元素的詳細資訊,請參閱 SQL Amazon S3 Select 的參考。
您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、 SelectObjectContent
RESTAPI操作或 來執行SQL查詢 AWS SDKs。
注意
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 API參考 中錯誤回應頁面的SELECT物件內容錯誤代碼清單一節。
如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。