

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# Amazon Redshift Spectrum 中查詢的資料檔案
<a name="c-spectrum-data-files"></a>

本節說明如何在 Amazon S3 中建立 Redshift Spectrum 可支援格式的資料檔案。

您在 Amazon Redshift Spectrum 中用於查詢的資料檔案，通常與您用於其他應用程式的檔案為相同類型。例如，相同的檔案類型會與 Amazon Athena、Amazon EMR 和 Quick 搭配使用。您可以直接從 Amazon S3 查詢原始格式的資料。若要執行此作業，資料檔案的格式必須是 Redshift Spectrum 支援的格式，且位於您叢集可存取的 Amazon S3 儲存貯體中。

具有資料檔案和 Amazon Redshift 叢集的 Amazon S3 儲存貯體必須位於相同的 AWS 區域。如需支援 AWS 區域的資訊，請參閱 [Amazon Redshift Spectrum 區域](c-spectrum-overview.md#c-spectrum-regions)。

## Redshift Spectrum 的資料格式
<a name="c-spectrum-data-files-formats"></a>

Redshift Spectrum 支援下列結構化與半結構化的資料格式。


| 檔案格式 | 單欄式 | 支援平行讀取 | 分割單位 | 
| --- | --- | --- | --- | 
| Parquet | 是 | 是 | 資料列群組 | 
| ORC | 是 | 是 | Stripe | 
| RCFile | 是 | 是 | 資料列群組 | 
| TextFile | 否 | 是 | Row | 
| SequenceFile | 否 | 是 | 資料列或區塊 | 
| RegexSerde | 否 | 是 | Row | 
| OpenCSV | 否 | 是 | Row | 
| AVRO | 否 | 是 | 區塊 | 
| Ion | 否 | 否 | N/A | 
| JSON | 否 | 否 | N/A | 

在上表中，標題指出下列項目：
+ **單欄式** – 檔案格式是否實體上以資料欄導向的結構儲存資料，而不是以資料列導向的結構。
+ **支援平行讀取** – 檔案格式是否支援讀取檔案內的個別區塊。讀取個別區塊可以跨多個獨立 Redshift Spectrum 請求分配檔案的處理，而不必在單一請求中讀取完整檔案。
+ **分割單位** – 對於可平行讀取的檔案格式，分割單位是單一 Redshift Spectrum 請求可處理的最小資料區塊。

**注意**  
文字檔案中的時間戳記值格式必須為 `yyyy-MM-dd HH:mm:ss.SSSSSS`，如以下的時間戳記值所示：`2017-05-01 11:30:59.000000`。

我們建議使用例如 Apache Parquet 的單欄式儲存檔案格式。Amazon Redshift 支援 Apache Parquet v1 資料檔案格式。使用單欄式儲存檔案格式，您只需選擇所需的資料欄，即可最大幅度地減少 Amazon S3 中的資料傳輸。

## Redshift Spectrum 的壓縮類型
<a name="c-spectrum-data-files-compression"></a>

為減少儲存空間，提高效能並降低成本，我們強烈建議您壓縮您的資料檔案。Redshift Spectrum 會根據副檔名識別檔案壓縮類型。

Redshift Spectrum 支援下列壓縮類型與副檔名。


| 壓縮演算法 | 副檔名 | 支援平行讀取 | 
| --- | --- | --- | 
| Gzip | .gz | 否 | 
| Bzip2 | .bz2 | 是 | 
| Snappy | .snappy | 否 | 

Amazon Redshift 也支援 Apache Parquet 檔案和 Apache Iceberg 資料表的 Zstandard (zstd) 壓縮。

您可以套用不同層級的壓縮。最常見的是，您可以壓縮整個檔案或壓縮檔案中的個別區塊。在檔案層級壓縮單欄式格式不會產生效能優勢。

為了使 Redshift Spectrum 能夠平行讀取檔案，下列條件必須成立：
+ 檔案格式支援平行讀取。
+ 檔案層級壓縮 (如果有的話) 支援平行讀取。

檔案內的個別分割單位是否使用可平行讀取的壓縮演算法進行壓縮並不重要，因為每個分割單位都是由單一 Redshift Spectrum 請求處理。此情況的範例是 Snappy 壓縮的 Parquet 檔案。Parquet 檔案中的個別資料列群組會使用 Snappy 進行壓縮，但檔案的頂層結構仍會保持未壓縮狀態。在此情況下，可以平行讀取檔案，因為每個 Redshift Spectrum 請求都可以從 Amazon S3 中讀取和處理個別列群組。

## Redshift Spectrum 的加密
<a name="c-spectrum-data-files-encryption"></a>

Redshift Spectrum 可透明的解密使用以下加密選項加密的資料檔案：
+ 使用由 Amazon S3 管理的 AES-256 加密金鑰的伺服器端加密 (SSE-S3)。
+ 伺服器端加密搭配由 AWS Key Management Service (SSE-KMS) 管理的金鑰。

Redshift Spectrum 不支援 Amazon S3 用戶端加密。如需伺服器端加密的相關資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

Amazon Redshift 使用大量平行處理 (MPP) 來達成在大量資料上操作複雜查詢的快速執行。Redshift Spectrum 擴展了相同的原則來查詢外部資料，並依需要使用多個 Redshift Spectrum 執行個體來掃描檔案。將檔案放在每個資料表的單獨資料夾中。

您可以透過執行下列動作來最佳化資料以進行平行處理：
+ 如果您的檔案格式或壓縮不支援平行讀取，請將大型檔案分成許多較小的檔案。建議您使用介於 64 MB 與 1 GB 之間的檔案大小。
+ 將所有檔案維持相同大小。如果某些檔案比其他檔案大得多，則 Redshift Spectrum 無法平均分配工作負載。