

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

# 將 Amazon S3 中的檔案用於資料來源
<a name="edit-jobs-source-s3-files"></a>

如果您選擇 Amazon S3 做為資料來源，則可以選擇下列其中一項：
+  Data Catalog 資料庫和資料表。
+ Amazon S3 中的儲存貯體、資料夾或檔案。

如果您使用 Amazon S3 儲存貯體作為資料來源，則 AWS Glue 會從其中一個檔案，或使用您指定為範例檔案的檔案中，偵測位於指定位置之資料的結構描述。結構描述偵測會發生在您使用 **Infer schema (推斷結構描述)** 按鈕時。如果變更 Amazon S3 位置或範例檔案，則必須選擇 **Infer schema (推斷結構描述)**，以使用新資訊執行結構描述偵測。

**設定直接從 Amazon S3 中的檔案讀取的資料來源節點**

1. 前往新任務或已儲存任務的視覺化編輯器。

1. 在任務圖表中為 Amazon S3 來源選擇資料來源節點。

1. 選擇 **Data source properties (資料來源屬性)** 索引標籤，然後輸入下列資訊：
   + **S3 source type (S3 來源類型)**：(僅適用於 Amazon S3 資料來源) 選擇 **S3 location (S3 位置)** 選項。
   + **S3 URL**：輸入包含任務資料的 Amazon S3 儲存貯體、資料夾或檔案的路徑。您可以選擇 **Browse S3 (瀏覽 S3)**，從您的帳戶可用位置選取路徑。
   + **Recursive** (遞迴)：如果您想要 AWS Glue 從 S3 位置的子資料夾中的檔案讀取資料，請選擇此選項。

     如果子資料夾包含分割的資料，AWS Glue 不會將資料夾名稱中指定的任何分割區資訊新增至 Data Catalog 。例如，請試想在 Amazon S3 中有以下資料夾：

     ```
     S3://sales/year=2019/month=Jan/day=1
     S3://sales/year=2019/month=Jan/day=2
     ```

     如果選擇 **Recursive** (遞迴)，然後選取 `sales` 資料夾作為您的 S3 位置，則 AWS Glue 會讀取所有子資料夾中的資料，但不會為年份、月份或日建立分割區。
   + **Data format (資料格式)**：選擇儲存資料的格式。您可以選擇 JSON、CSV 或 Parquet。您選取的值會告訴 AWS Glue 任務如何從來源檔案讀取資料。
**注意**  
如果您沒有為資料選取正確的格式，則 AWS Glue 可能會正確推斷結構描述，但任務將無法正確解析來源檔案中的資料。

     根據您選擇的格式，您可以輸入其他組態選項。
     + **JSON** (JavaScript 物件標記法)
       + **JsonPath**：輸入指向用來定義資料表結構描述之物件的 JSON 路徑。JSON 路徑表達式一律以將 XPath 表達式與 XML 文件搭配使用的相同方式，來參照 JSON 結構。JSON 路徑中的「根成員物件」一律稱為 `$`，即使它是物件或陣列。您可以用點標記法或括號標記法來撰寫 JSON 路徑。

         如需 JSON 路徑的詳細資訊，請參閱 GitHub 網站上的 [JsonPath](https://github.com/json-path/JsonPath)。
       + **Records in source files can span multiple lines (來源檔案中的記錄可以跨越多行)**：如果單項記錄可以跨越 CSV 檔案中的多行，請選擇此選項。
     + **CSV** (逗號分隔值)
       + **Delimiter (分隔符號)**：輸入字元來表示用什麼分隔列中的每個欄項目，例如 `;` 或 `,`。
       + **Escape character (逸出字元)**：輸入用作逸出字元的字元。此字元表示緊接在逸出字元後面的字元應該依照字面解讀，不應該被解譯為分隔符號。
       + **Quote character (引號字元)**：輸入用來將個別字串群組成單一值的字元。例如，如果在您的 CSV 檔案中有像 `"This is a single value"` 的值，您可以選擇 **Double quote (") (雙引號 ("))**。
       + **Records in source files can span multiple lines (來源檔案中的記錄可以跨越多行)**：如果單項記錄可以跨越 CSV 檔案中的多行，請選擇此選項。
       + **First line of source file contains column headers (來源檔案的第一行包含欄標題)**：如果 CSV 檔案中的第一列包含欄標頭而非資料，請選擇此選項。
     + **Parquet** (Apache Parquet 直欄式儲存)

       沒有額外的設定可以為儲存在 Parquet 格式的資料進行設定。
     + **Apache Hudi**

       對於以 Apache Hudi 格式儲存的資料，無需設定其他設定。
     + **Delta Lake**

       對於以 Delta Lake 格式儲存的資料，無需設定其他設定。
     + **Excel**

       對於以 Excel 格式儲存的資料，無需設定其他設定。
   + **Partition predicate (分割區述詞)**：若要分割從資料來源讀取的資料，請輸入以 Spark SQL 為基礎的布林表達式，其中只包含分割欄，例如：`"(year=='2020' and month=='04')"`
   + **Advanced options** (進階選項)：如果您需要 AWS Glue 根據特定檔案偵測資料的結構描述，請展開此區段。
     + **Schema inference** (結構描述推斷)：如果您想使用特定的檔案而不是讓 AWS Glue 選擇檔案，請選擇選項 **Choose a sample file from S3** (從 S3 選擇範例檔案)。結構描述推論不適用於 Excel 來源。
     + **Auto-sampled file (自動取樣檔案)**：輸入 Amazon S3 中要用於推斷結構描述的檔案路徑。

     如果您要編輯資料來源節點並變更選取的範例檔案，請選擇 **Reload schema (重新載入結構描述)** 以使用新的範例檔案來偵測結構描述。

1. 選擇 **Infer schema (推斷結構描述)** 按鈕，以從 Amazon S3 中的來源檔案偵測結構描述。如果變更 Amazon S3 位置或範例檔案，則必須再次選擇 **Infer schema (推斷結構描述)** 以使用新資訊推斷結構描述。