設定爬行者程式 - AWS Glue

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

設定爬行者程式

爬蟲程式會存取您的資料存放區、擷取中繼資料,以及在 AWS Glue Data Catalog中建立資料表定義。 AWS Glue 主控台中的 [爬行者程式] 窗格會列出您建立的所有爬行者程式。該清單會針對爬蟲程式最近一次的執行作業,顯示其狀態與指標。

注意

如果您選擇使用自己的JDBC驅動程式版本,AWS Glue搜尋器將消耗任AWS Glue務和 Amazon S3 儲存貯體中的資源,以確保您提供的驅動程式在您的環境中執行。帳戶中將反映資源的額外使用量。此外,提供您自己的JDBC驅動程序並不意味著爬蟲能夠利用驅動程序的所有功能。驅動程式僅限於新增 AWS Glue 連線中所述的屬性。

設定爬行者程式
  1. 登入 AWS Management Console 並開啟AWS Glue主控台,位於https://console.aws.amazon.com/glue/。在導覽窗格中選擇 Crawlers (爬蟲程式)

  2. 選擇建立爬蟲程式,然後依照新增爬蟲程式精靈中的說明進行操作。精靈會引導您建立爬行者程式所需的步驟。如果您要新增自訂的呼叫符號來定義結構描述,請參閱。定義和管理分類器

步驟 1:設定爬蟲程式屬性

輸入爬蟲程式的名稱和描述 (選用)。或者,您可以使用 Tag key (標籤金鑰) 和選用的 Tag value (標籤值),標記您的爬蟲程式。建立之後,標籤金鑰為唯讀。應用標籤至某些資源,有助於您對其進行整理和識別。如需詳細資訊,請參閱中的 AWS 標籤 AWS Glue。

名稱

名稱可包含字母 (A-Z)、數字 (0-9)、連字號 (-) 或底線 (_),並且長度上限為 255 個字元。

描述

說明最多可有 2,048 個字元。

標籤

您可以使用標籤整理和識別資源。如需詳細資訊,請參閱下列內容:

步驟 2:選擇資料來源和分類器

資料來源組態

您的資料是否已對映至AWS Glue表格? 選擇「尚未」或「是」。依預設已選取「尚未」。

爬蟲程式可以直接存取資料存放區做為抓取來源,也可以使用現有的 Data Catalog 資料表做為來源。如果爬蟲程式使用現有的目錄資料表,即會抓取這些目錄資料表指定的資料存放區。

  • 尚未:選取一或多個要網路爬取的資料來源。爬蟲可以編目不同類型的多個資料存放區 (Amazon S3 等)。JDBC

    您一次只可設定一個資料存放區。在您提供連線資訊並包含路徑和排除樣式之後,接著可以選擇加入其他資料存放區。

  • 是:從 AWS Glue Data Catalog 中選取現有資料表。指定要抓取之資料存放區的目錄資料表。爬蟲程式只能在單一執行中抓取目錄資料表,而無法混合其他來源類型。

    指定目錄資料表做為來源的常見原因是您已手動建立資料表 (因為您已經知道資料存放區的結構),並希望爬蟲程式讓資料表持續更新,包括新增新的分割區。如需了解其他原因的說明,請參閱使用爬蟲程式更新手動建立的資料目錄資料表

    當您指定現有資料表做為爬蟲程式來源類型時,則適用以下條件:

    • 資料庫名稱是選用的。

    • 只允許指定 Amazon S3 或 Amazon DynamoDB 資料存放區的目錄資料表。

    • 爬蟲程式執行時,不會建立任何新的目錄資料表。系統會視需要更新現有的資料表,包括新增新的分割區。

    • 系統會忽略資料存放區中找到的已刪除物件,而不會刪除任何目錄資料表。反之,爬蟲程式會寫入日誌訊息。(SchemaChangePolicy.DeleteBehavior=LOG)

    • 依預設,系統會啟用爬蟲程式組態選項以建立每個 Amazon S3 路徑的單一結構描述,且無法停用。(TableGroupingPolicy=CombineCompatibleSchemas) 如需詳細資訊,請參閱為每個 Amazon S3 包含路徑建立單一結構描述

    • 您無法將含有任何其他來源類型的目錄資料表混合為來源 (例如 Amazon S3 或 Amazon DynamoDB)。

若要使用差異資料表,請先使用 Athena DDL 或 AWS Glue API.

使用 Athena,將位置設定為您的 Amazon S3 資料夾,並將表格類型設定為 DELTA ''。

CREATE EXTERNAL TABLE database_name.table_name LOCATION 's3://bucket/folder/' TBLPROPERTIES ('table_type' = 'DELTA')

使用 AWS Glue API,在表格參數對映中指定表格類型。資料表參數必須包含下列索引鍵/值組。如需如何建立資料表的詳細資訊,請參閱 Create_table 的 Boto3 說明文件

{ "table_type":"delta" }
資料來源

選取或新增爬蟲程式要掃描的資料來源清單。

(選擇性) 如果您選擇JDBC做為資料來源,則可以在指定儲存JDBC驅動程式資訊的連線存取時使用您自己的驅動程式。

包含路徑

在評估抓取要包含或排除的內容時,爬蟲程式會先評估必要的包含路徑。對於 Amazon S3、MongoDB、MongoDB Atlas、Amazon DocumentDB (with MongoDB compatibility) 和關聯式資料存放區,您必須指定包含路徑。

對於 Amazon S3 資料存放區

選擇是否要在此帳戶或在其他帳戶中指定路徑,然後瀏覽以選擇 Amazon S3 路徑。

對於 Amazon S3 資料存放區,包含路徑語法是 bucket-name/folder-name/file-name.ext。要探索儲存貯體中的所有物件,僅指定在包含路徑的儲存貯體名稱。排除模式是相對於包含路徑。

對於 Delta Lake 的資料儲存

將一或多個 Amazon S3 路徑指定至差異資料表為 s3://bucket/prefix/object.

對於 Iceberg 或 Hudi 資料存放區

將包含含有冰山或 Hudi 資料表中繼資料的資料夾的一或多個 Amazon S3 路徑指定為 s3://bucket/prefix.

對於 Hudi 資料存放區,Hudi 資料夾可能位於根資料夾的子資料夾中。爬蟲程式將掃描路徑下所有資料夾中的 Hudi 資料夾。

對於資JDBC料倉庫

Enter <database>/<schema>/<table><database>/<table>,視資料庫產品而定。Oracle 數據庫和我SQL不支持路徑中的模式。您可以取代百分比 (%) 字元 <schema><table>。 例如,對於系統識別碼 (SID) 為的 Oracle 資料庫orcl,請輸入orcl/%以匯入連線中指名的使用者可存取的所有表格。

重要

此欄位會區分大小寫。

對於 MongoDB、MongoDB Atlas 或 Amazon DocumentDB 資料存放區

Enter database/collection.

對於 MongoDB、MongoDB Atlas 和 Amazon DocumentDB (with MongoDB compatibility),語法是 database/collection

對於JDBC資料存放區,語法為database-name/schema-name/table-namedatabase-name/table-name。語法取決於資料庫引擎在資料庫中是否支援結構描述。例如,對於諸如 My SQL 或 Oracle 之類的資料庫引擎,請勿schema-name在包含路徑中指定。您可以在包含路徑中針對結構描述或資料表替代百分比符號 (%),以代表資料庫中的所有結構描述或所有資料表。您不能替代包含路徑中資料庫的百分比符號 (%)。

橫向深度上限 (僅適用於 Iceberg 或 Hudi 資料存放區)

定義爬蟲程式可在 Amazon S3 路徑中周遊探索 Iceberg 或 Hudi 中繼資料資料夾的 Amazon S3 路徑深度上限。此參數的用途是限制爬蟲程式執行時間。預設值為 10,最大值為 20。

排除模式

這些模式可讓您排除抓取特定檔案或資料表。排除路徑是相對於包含路徑。例如,若要排除JDBC資料倉庫中的表格,請在排除路徑中鍵入表格名稱。

爬行者程式會使用包含連接字串的AWS Glue連線連線至JDBC資料倉庫。JDBC URI爬行者程式只能使用AWS Glue連線中的使用JDBC者名稱和密碼存取資料庫引擎中的物件。爬行者程式只能建立可透過JDBC連線存取的表格。爬行者程式使用存取資料庫引擎之後 JDBCURI,會使用包含路徑來決定在「資料目錄」中建立資料庫引擎中的哪些表格。例如,使用 My 時SQL,如果您指定的包括路徑MyDatabase/%,則會在「資料目錄」中建立其中的所有表格。MyDatabase存取 Amazon Redshift 時,如果您指定 MyDatabase/% 的包括路徑,則資料庫 MyDatabase 所有結構描述中的所有資料表會在 Data Catalog 中建立。如果您指定 MyDatabase/MySchema/% 的包括路徑,則資料庫 MyDatabase 中的所有資料表和結構描述 MySchema 會加以建立。

在指定包含路徑後,您可以指定一個或多個 Unix 樣式的 glob 排除模式,從包含路徑包含的抓取中排除物件。這些模式會套用至您的包含路徑,以判斷哪些物件被排除。這些模式也會在爬蟲程式所建立的表格中儲存為屬性。AWS Glue PySpark 副檔名 (例如) 會讀取表格屬性create_dynamic_frame.from_catalog,並排除排除由排除模式定義的物件。

AWS Glue 支援以下在排除模式中的 glob 模式。

排除模式 描述
*.csv 符合目前資料夾中代表以 .csv 結尾之物件名稱的 Amazon S3 路徑
*.* 符合所有包含點的物件名稱
*.{csv,avro} 符合以 .csv.avro 結尾的物件名稱
foo.? 符合以 foo. 開頭並由單一字元副檔名接續的物件名稱
myfolder/* 符合位於 myfolder 下一層子資料夾中的物件,例如 /myfolder/mysource
myfolder/*/* 符合位於 myfolder 下兩層子資料夾中的物件,例如 /myfolder/mysource/data
myfolder/** 符合位於 myfolder 所有子資料中的物件,例如 /myfolder/mysource/mydata/myfolder/mysource/data
myfolder** 符合資料夾 myfolder 以及 myfolder 下的檔案,例如 /myfolder/myfolder/mydata.txt
Market* 比對資JDBC料庫中名稱以開頭的表格Market,例如Market_usMarket_fr

AWS Glue 對 glob 排除模式的解譯如下:

  • 斜線 (/) 字元為分隔符號,可將 Amazon S3 金鑰分隔至資料夾階層。

  • 星號 (*) 字元符合不超過資料夾邊界之名稱元件的零個或多個字元。

  • 雙星號 (**) 符合超過資料夾或結構描述邊界的零個或多個字元。

  • 問號 (?) 字元符合名稱元件的單一字元。

  • 反斜線 (\) 字元用於逸出可被解譯為特殊字元的字元。表達式 \\ 符合一個反斜線,而 \{ 符合左大括弧。

  • 方括號 [ ] 會建立括號表達式,符合一組字元中一個名稱元件的單一字元。例如,[abc] 符合 abc。連字號 (-) 可用於指定範圍,因此 [a-z] 指定的範圍符合從 az (包含)。這些形式可以混合,因此 [abce-g] 符合 abcefg。如果方括號 ([) 後方的字元為驚嘆號 (!),則此括號表達式為否定。例如,[!a-c] 符合 abc 以外的字元。

    在括號表達式中,*?\ 字元符合本身。如果連字號 (-) 是方括號內的第一個字元,則其符合本身,如果連字號是 ! 後的第一個字元,則為否定。

  • 大括弧 ({ }) 會括住一組子模式,如果群組中的任何子模式符合,則此群組也符合。逗號 (,) 字元用於分隔子模式。群組不能巢狀組合。

  • 前置句點或點號字元在相符操作中會視為一般字元。例如,* 排除模式符合檔案名稱 .hidden

範例 Amazon S3 排除模式

每個排除模式都會以包含路徑來評估。例如,假設您有以下 Amazon S3 目錄結構:

/mybucket/myfolder/ departments/ finance.json market-us.json market-emea.json market-ap.json employees/ hr.json john.csv jane.csv juan.txt

包含路徑為 s3://mybucket/myfolder/,而以下為排除模式的一些範例結果:

排除模式 結果
departments/** 排除 departments 以下所有檔案和資料夾,並包含 employees 資料夾及其檔案
departments/market* 排除 market-us.jsonmarket-emea.jsonmarket-ap.json
**.csv 排除 myfolder 以下名稱以 .csv 結尾的所有物件
employees/*.csv 排除 employees 資料夾中所有的 .csv 檔案
範例 排除 Amazon S3 分割區的子集

假設您的資料以天為單位分割,那麼一年中的每一天都是一個獨立的 Amazon S3 分割區。2015 年 1 月有 31 個分割區。如果現在只要抓取 1 月第一週的資料,您就必須排除第 1 至第 7 天以外的所有分割區:

2015/01/{[!0],0[8-9]}**, 2015/0[2-9]/**, 2015/1[0-2]/**

讓我們看看此全域模式的部分。第一部分的 2015/01/{[!0],0[8-9]}** 排除了 2015 年第 01 個月不以「0」開頭的所有天數 (除了第 08 天和第 09 天)。請注意,「**」的用途是天數模式的尾碼,會超過資料夾邊界至較低層級的資料夾。如果使用「*」,則較低的資料夾層級不會被排除。

第二部分的 2015/0[2-9]/** 會排除 2015 年第 02 至 09 個月裡的天數。

第三部分的 2015/1[0-2]/** 會排除 2015 年第 10、11、12 個月裡的天數。

範例 JDBC排除模式

假設您正在探索具有下列結構描述結構的JDBC資料庫:

MyDatabase/MySchema/ HR_us HR_fr Employees_Table Finance Market_US_Table Market_EMEA_Table Market_AP_Table

包含路徑為 MyDatabase/MySchema/%,而以下為排除模式的一些範例結果:

排除模式 結果
HR* 排除名稱以 HR 開頭的資料表
Market_* 排除名稱以 Market_ 開頭的資料表
**_Table 排除所有名稱以 _Table 結尾的資料表
其他爬蟲程式來源參數

每個來源類型都需要一組不同的附加參數。以下提供非完整清單:

連線

選取或新增 AWS Glue 連線。如需連線的詳細資訊,請參閱 連線至資料

其他中繼資料-可選 (適用於JDBC資料倉庫)

選取要網路爬取的其他爬蟲程式中繼資料屬性。

  • 註解:網路爬取相關的資料表層級和資料欄層級註解。

  • 原始類型:將資料表資料欄的原始資料類型保存在其他中繼資料中。作為預設行為,爬蟲程式會將原始資料類型轉換為 Hive 相容的類型。

JDBC驅動程式類別名稱-選用 (適用於JDBC資料倉庫)

輸入要連線至資料來源之爬行者程式的自訂JDBC驅動程式類別名稱:

  • Postgres:org.postgresql.Driver

  • 我的SQL:我的網站。驅動程序,我的網絡驅動程序。

  • Redshift:com.amazon.redshift.jdbc.Driver、com.amazon.redshift.jdbc42.Driver

  • 甲骨文:甲骨文 .jdbc. 驅動程序。 OracleDriver

  • SQL服務器:微軟 .sql 服務器 .jdbc。 SQLServerDriver

JDBC驅動程式 S3 路徑-選用 (適用於JDBC資料存放區)

選擇 .jar 檔案的現有 Amazon S3 路徑。這是使用爬行者程式連線至資料來源的自訂JDBC驅動程式時儲存.jar檔案的位置。

啟用資料取樣 (僅適用於 Amazon DynamoDB、MongoDB、MongoDB Atlas 和 Amazon DocumentDB 資料存放區)

選取是否只編目資料範例。如果未選取,則會編目整個資料表。當資料表不是高傳輸量資料表時,掃描所有記錄可能需要很長的時間。

建立用於查詢的資料表 (僅適用於 Delta Lake 資料存放區)

選取建立 Delta Lake 資料表的方式:

  • 建立原生資料表:允許與支援直接查詢 Delta 交易日誌的查詢引擎整合。

  • 建立符號連結資料夾:根據特定組態參數,使用由分割區索引鍵分割的資訊清單檔案建立符號連結清單檔案資料夾。

掃描速率 – 選用 (僅適用於 DynamoDB 資料存放區)

指定爬蟲程式要使用的 DynamoDB 資料表讀取容量單位百分比。讀取容量單位是 DynamoDB 定義的術語,此數值可作為每秒可在該資料表上執行的讀取次數速率限制符號。請輸入介於 0.1 到 1.5 之間的值。如未指定,則會將已佈建的資料表預設為 0.5%,並將隨需資料表預設為 1/4 的最大設定容量。請注意,只有佈建的容量模式才能與 AWS Glue 編目器搭配使用。

注意

對於 DynamoDB 的資料儲存,請設定已佈建的容量模式,以便處理資料表的讀取和寫入。 AWS Glue 爬行者程式不應與隨選容量模式搭配使用。

網路連線 – 選用 (僅適用於 Amazon S3 資料存放區)

選擇是否包含要用於此 Amazon S3 目標的網路連線。請注意,每個爬蟲程式僅限於一個網路連線,因此任何其他 Amazon S3 目標也會使用相同的連線 (如果保留空白,則無連線)。

如需連線的詳細資訊,請參閱 連線至資料

僅對檔案的子集和樣本大小進行取樣 (僅適用於 Amazon S3 資料存放區)

指定在資料集中網路爬取範例檔案時,每個分葉資料夾中要編目的檔案數目。開啟此功能時,爬蟲程式會隨機選取每個分葉資料夾中要網路爬取的某些檔案,而不是網路爬取此資料集中的所有檔案。

取樣爬蟲程式最適合先前了解其資料格式,並且知道資料夾中的結構描述不會變更的客戶。開啟此功能會大幅減少爬蟲程式執行時間。

有效值是介於 1 到 249 之間的整數。如果未指定,則會網路爬取所有檔案。

後續爬蟲程式執行

此欄位是會影響所有 Amazon S3 資料來源的全域欄位。

  • 網路爬取所有子資料夾:在每次後續網路爬取時,再次網路爬取所有資料夾。

  • 僅網路爬取新的子資料夾:只會網路爬取自上次網路爬取以來新增的 Amazon S3 資料夾。如果結構描述相容,則會將新的分割區新增至現有資料表。如需詳細資訊,請參閱 排程增量編目以新增分割區

  • 根據事件進行網路爬取:依賴 Amazon S3 事件來控制要網路爬取的資料夾。如需詳細資訊,請參閱 使用 Amazon S3 事件通知加速網路爬取

自訂分類器 – 選用

定義自訂分類器,再定義爬蟲程式。分類器會檢查指定的檔案是否採用爬蟲程式可以處理的格式。如果是,則分類器會以符合該資料格式的 StructType 物件形式,建立結構描述。

如需詳細資訊,請參閱 定義和管理分類器

步驟 3:設定安全設定

IAM角色

爬蟲程式會擔任此角色。它必須具有類似於 AWS 受管理策略的權限AWSGlueServiceRole。對於 Amazon S3 和 DynamoDB 來源,它也必須具有存取資料存放區的許可。如果爬蟲讀取使用 AWS Key Management Service (AWS KMS) 加密的 Amazon S3 資料,則該角色必須具有 AWS KMS 金鑰的解密許可。

對於 Amazon S3 資料存放區,連接到角色的其他許可將類似下列內容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket/object*" ] } ] }

對於 Amazon DynamoDB 資料存放區,連接到角色的其他許可將類似下列內容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:Scan" ], "Resource": [ "arn:aws:dynamodb:region:account-id:table/table-name*" ] } ] }

為了添加自己的JDBC驅動程序,需要添加其他權限。

  • 授予下列任務動作的許可:CreateJobDeleteJobGetJobGetJobRunStartJobRun

  • 授予 Amazon S3 動作的許可:s3:DeleteObjectss3:GetObjects3:ListBuckets3:PutObject

    注意

    如果 Amazon S3 儲存貯體政策已停用,則不需要 s3:ListBucket

  • 在 Amazon S3 政策中授予服務主體對儲存貯體/資料夾的存取權。

Amazon S3 政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucket-name/driver-parent-folder/driver.jar", "arn:aws:s3:::bucket-name" ] } ] }

AWS Glue會建立下列資料夾 (_crawler_glue_job_crawler在與 Amazon S3 儲存貯體中的JDBC驅動程式相同的層級)。例如,如果驅動程式路徑為 <s3-path/driver_folder/driver.jar>,則如果下列資料夾尚不存在,則會建立這些資料夾:

  • <s3-path/driver_folder/_crawler>

  • <s3-path/driver_folder/_glue_job_crawler>

或者,您可以新增安全組態至爬蟲程式以指定靜態加密選項。

如需詳細資訊,請參閱 步驟 2:建立IAM角色 AWS GlueAWS Glue 的身分識別與存取管理

Lake Formation 組態 – 選用

允許爬蟲程式使用 Lake Formation 憑證來網路爬取資料來源。

核取 Use Lake Formation credentials for crawling S3 data source (使用 Lake Formation 憑證網路爬取 S3 資料來源),可讓爬蟲程式使用 Lake Formation 憑證來網路爬取資料來源。如果資料來源屬於其他帳戶,您必須提供註冊的帳戶 ID。否則,爬蟲程式只會網路爬取與帳戶相關聯的那些資料來源。僅適用於 Amazon S3 和 Data Catalog 資料來源。

安全組態 – 選用

設定包括安全組態。如需詳細資訊,請參閱下列內容:

注意

在爬行者程式上設定安全性組態之後,您就可以進行變更,但無法將其移除。若要降低爬行者程式的安全層級,請在組態DISABLED中明確地將安全性功能設定為,或建立新的爬行者程式。

步驟 4:設定輸出和排程

輸出組態

這些選項包括當偵測到資料存放區的結構描述變更、刪除物件等情況,爬蟲程式應該如何處理。如需詳細資訊,請參閱 自訂爬行者程式行為

爬蟲程式排程

您可以在 AWS Glue中隨需執行爬蟲程式或為爬蟲程式和任務定義以時間為基礎的排程。這些排程的定義使用類似 Unix 的 ​cron​ 語法。如需詳細資訊,請參閱 排程爬蟲程式

步驟 4:檢閱和建立

檢閱您設定的爬蟲程式設定,然後建立爬蟲程式。