定義和管理分類器 - AWS Glue

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

定義和管理分類器

分類器讀取資料存放區中的資料。如果它能辨識資料的格式,將會產生結構描述。分類器也會傳回一個確定數字以表示所識別格式的確定程度。

AWS Glue 提供一組內建分類器,但您也可以建立自訂分類器。AWS Glue 會先依照您在爬蟲程式定義中指定的順序叫用自訂分類器。根據從自訂分類器傳回的結果,AWS Glue 也可能叫用內建分類器。如果分類器在處理期間傳回 certainty=1.0,表示它 100% 確定可以建立正確的結構描述。然後,AWS Glue 將使用此分類器的輸出。

如果沒有分類器傳回 certainty=1.0,AWS Glue 將使用確定程度最高的分類器的輸出。如果沒有分類器傳回大於 0.0 的確定程度,AWS Glue 將傳回預設的分類字串 UNKNOWN

我應該在何時使用分類器?

當您在 AWS Glue Data Catalog中探索資料存放區以定義中繼資料資料表時,可使用分類器。您可以用一組已排序的分類器來設定您的爬蟲程式。當爬蟲程式叫用分類器時,分類器會判斷資料是否能夠辨識。如果分類器無法識別資料或無法 100% 確定,爬蟲程式將叫用清單中的下一個分類器,以判斷它是否能夠識別資料。

如需使用 AWS Glue 主控台建立分類器的詳細資訊,請參閱使用主控台建立分類器 AWS Glue

自訂分類器

分類器的輸出包含一個字串,它會指出檔案的分類或格式 (例如,json) 以及檔案結構描述。對於自訂分類器,您可以根據分類器的類型,定義建立結構描述的邏輯。分類器類型包括根據 grok 模式,XML標籤和JSON路徑定義模式。

如果您變更分類器定義,之前使用分類器探索的任何資料將不會重新分類。爬蟲程式會持續追蹤之前探索的資料。會使用更新分類器來分類新資料,這可能會更新結構描述。如果資料的結構描述擴張,則於爬蟲程式執行時將分類器更新到任何結構描述變更的帳戶。若要重新分類資料以更正不正確的分類器,請使用更新的分類器建立新爬蟲程式。

如需在 AWS Glue 中建立自訂分類器的詳細資訊,請參閱撰寫各種資料格式的自訂分類器

注意

如果您的資料格式能夠由內建分類器之一加以辨識,您將無需建立自訂分類器。

內置分類器

AWS Glue提供各種格式的內置分類器,包括 JSONCSV,Web 日誌和許多數據庫系統。

如果 AWS Glue 找不到能 100% 確定符合輸入資料格式的自訂分類器,將會依照下表所列順序叫用內建分類器。內建分類器傳回結果,指出格式是否符合 (certainty=1.0) 或不符合 (certainty=0.0)。第一個具有 certainty=1.0 的分類器將為 Data Catalog 的中繼資料資料表提供分類字串和結構描述。

分類器類型 分類字串 備註
Apache Avro avro 讀取檔案開頭的結構描述以判斷格式。
阿帕奇 ORC orc 讀取檔案中繼資料以判斷格式。
Apache Parquet parquet 讀取檔案結尾的結構描述以判斷格式。
JSON json 讀取檔案的開頭以判斷格式。
二進制 JSON bson 讀取檔案的開頭以判斷格式。
XML xml 讀取文件的開頭以確定格式。 AWS Glue根據文件中的XML標籤來決定資料表結構定義。

如需有關建立自訂XML分類器以指定文件中列的資訊,請參閱撰寫XML自訂分類器

Amazon Ion ion 讀取檔案的開頭以判斷格式。
結合的 Apache 日誌 combined_apache 透過 grok 模式決定日誌格式。
Apache 日誌 apache 透過 grok 模式決定日誌格式。
Linux 核心日誌 linux_kernel 透過 grok 模式決定日誌格式。
Microsoft 日誌 microsoft_log 透過 grok 模式決定日誌格式。
Ruby 日誌 ruby_logger 讀取檔案的開頭以判斷格式。
Squid 3.x 日誌 squid 讀取檔案的開頭以判斷格式。
Redis 監控日誌 redismonlog 讀取檔案的開頭以判斷格式。
Redis 日誌 redislog 讀取檔案的開頭以判斷格式。
CSV csv 檢查以下分隔符號:逗號 (,)、直立線符號 (|)、Tab (\t)、分號 (;) 和 Ctrl-A (\u0001)。Ctrl-A 為 Start Of Heading 的 Unicode 控制字元。
Amazon Redshift redshift 使用JDBC連線匯入中繼資料。
我的 SQL mysql 使用JDBC連線匯入中繼資料。
後備 SQL postgresql 使用JDBC連線匯入中繼資料。
Oracle 資料庫 oracle 使用JDBC連線匯入中繼資料。
Microsoft SQL 伺服器 sqlserver 使用JDBC連線匯入中繼資料。
Amazon DynamoDB dynamodb 從 DynamoDB 資料表讀取資料。

可分類以下壓縮格式的檔案:

  • ZIP(支持僅包含單個文件的存檔)。請注意,Zip 在其他服務中並未完整支援 (因為封存的關係)。

  • BZIP

  • GZIP

  • LZ4

  • Snappy (支援標準和 Hadoop 原生 Snappy 格式)

內置CSV分類器

內置CSV分類器解析CSV文件內容以確定表的模式。AWS Glue此分類器會檢查以下分隔符號:

  • 逗號 (,)

  • 管道 (|)

  • Tab (\t)

  • 分號 (;)

  • Ctrl-A (\u0001)

    Ctrl-A 為 Start Of Heading 的 Unicode 控制字元。

若要分類為CSV,資料表結構定義必須至少有兩個資料欄和兩列資料。CSV分類器使用一些啟發式來確定標頭是否存在於給定的文件中。如果分類器無法判斷第一列資料的標頭,欄標頭會顯示為 col1col2col3,以此類推。內建CSV分類器決定是否要藉由評估檔案的下列特性來推斷標頭:

  • 潛在標題中的每一列解析為STRING數據類型。

  • 除了最後一個欄位,每個在潛在標頭中內容少於 150 個字元的欄位。若要允許結尾為分隔符號,整個檔案的最後一個欄位可以是空的。

  • 在潛在標頭中的每個欄必須符合欄位名稱的 AWS Glue regex 要求。

  • 標頭資料列必須與資料列有足夠的差異。為了確定這一點,一個或多個行必須解析為不是STRING類型。如果所有列的類型STRING,那麼數據的第一行是不是從被用作標題的後續行充分不同。

注意

如果內置CSV分類器沒有根據需要創建AWS Glue表格,則可以使用以下替代方法之一:

  • 變更「資料目錄」中的資料欄名稱、將設定SchemaChangePolicy為LOG,然後將分割區輸出組態設定InheritFromTable為以供 future 爬行者程式執行時使用。

  • 建立自訂 grok 分類器來剖析資料並指派您想要的欄。

  • 內建CSV分類器會建立參考LazySimpleSerDe為序列化程式庫的資料表,這是型別推斷的不錯選擇。但是,如果CSV資料包含加引號的字串,請編輯資料表定義並將資 SerDe 源庫變更為OpenCSVSerDe。將任何推斷的類型調整為STRING,將分割區輸出組態設定SchemaChangePolicy為LOG,然後將分割區輸出組態設定InheritFromTable為以供 future 爬行者程式執行。如需有關 SerDe 程式庫的詳細資訊,請SerDe 參閱 Amazon Athena 使用指南中的參考資料。