簡體   English   中英

AWS Glue Crawler 為每個分區添加表?

[英]AWS Glue Crawler adding tables for every partition?

我在 S3 存儲桶中以這種形式有數千個文件:

├── bucket
│   ├── somedata
│   │   ├── year=2016
│   │   ├── year=2017
│   │   │   ├── month=11
│   │   |   │   ├── sometype-2017-11-01.parquet
│   |   |   |   ├── sometype-2017-11-02.parquet
│   |   |   |   ├── ...
│   │   │   ├── month=12
│   │   |   │   ├── sometype-2017-12-01.parquet
│   |   |   |   ├── sometype-2017-12-02.parquet
│   |   |   |   ├── ...
│   │   ├── year=2018
│   │   │   ├── month=01
│   │   |   │   ├── sometype-2018-01-01.parquet
│   |   |   |   ├── sometype-2018-01-02.parquet
│   |   |   |   ├── ...
│   ├── moredata
│   │   ├── year=2017
│   │   │   ├── month=11
│   │   |   │   ├── moretype-2017-11-01.parquet
│   |   |   |   ├── moretype-2017-11-02.parquet
│   |   |   |   ├── ...
│   │   ├── year=...

預期行為:AWS Glue Crawler 為 somedata、moredata 等中的每一個創建一個表。它根據孩子的路徑名為每個表創建分區。

實際行為:AWS Glue Crawler 執行上述行為,但還為數據的每個分區創建了一個單獨的表,從而產生了數百個無關表(以及每個數據添加的更多無關表 + 新爬網)。

我看不到任何地方可以設置某些東西或以其他方式防止這種情況發生......有沒有人對防止創建這些不必要的表的最佳方法有建議?

添加到排除項

  • **_SUCCESS
  • **crc

為我工作(請參閱 aws 頁面膠水/add-crawler )。 雙星匹配所有文件夾(即分區)深度的文件。 我有一個 _SUCCESS 住了幾個級別。

確保為膠水設置日志記錄,這樣可以快速指出權限錯誤等。

使用為每個 Amazon S3 包含路徑創建單一架構選項來避免 AWS Glue 爬網程序添加所有這些額外的表。

我遇到了這個問題,最終得到了大約 7k 個表😅所以寫了下面的腳本來刪除它們。 它需要jq

#!/bin/sh
aws glue get-tables --region <YOUR AWS REGION> --database-name <YOUR AWS GLUE DATABASE> | jq '.TableList[] | .Name' | grep <A PATTERN THAT MATCHES YOUR TABLENAMEs> > /tmp/table-names.json 
cd /tmp
mkdir table-names
cd table-names
split -l 50 ../table-names.json 
for f in `ls`; cat $f | tr '\r\n' ' ' | xargs aws glue batch-delete-table --region <YOUR AWS REGION> --database-name <YOUR AWS GLUE DATABASE> --tables-to-delete;

檢查里面是否有空文件夾。 spark寫入S3時,有時會不會刪除_temporary文件夾,這會導致Glue爬蟲為每個分區創建表。

我遇到了同樣的問題。 我將*crc*作為排除模式添加到 AWS Glue 爬網程序中並且它起作用了。 或者,如果您抓取整個目錄,請添加*/*crc*

所以,我的情況有點不同,我有同樣的行為。

我得到了這樣的數據結構:

├── bucket
│   ├── somedata
│   │   ├── event_date=2016-01-01
│   │   ├── event_date=2016-01-02

因此,當我啟動 AWS Glue Crawler 而不是更新表時,此管道正在每個日期創建一個表。 在深入研究問題后,我發現有人在 json 文件中添加了一列作為錯誤,而不是idID 因為我的數據是鑲木地板,所以管道可以很好地存儲數據並在 EMR 中檢索。 但是 Glue 崩潰得非常糟糕,因為 Glue 將所有內容都轉換為小寫,這可能就是它崩潰的原因。 去除大寫列膠水開始像魅力一樣工作。

您需要為每種表/文件類型設置單獨的爬網程序。 因此,創建一個抓取,着眼於s3://bucket/somedata/和第二履帶,着眼於s3://bucket/moredata/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM