簡體   English   中英

AWS Glue-選擇動態文件

[英]AWS Glue - Pick Dynamic File

有誰知道如何從S3存儲桶中獲取動態文件? 我在S3存儲桶上安裝了搜尋器,但是我的問題是,每天都會有新文件帶有YYYY-MM-DD-HH-MM-SS后綴。

當我通過目錄讀取表時,它會讀取目錄中存在的所有文件? 是否可以動態選擇給定日期的最新三個文件並將其用作源?

謝謝!

如果文件位於同一位置,則無需重新運行搜尋器。 例如,如果您的數據文件夾為s3://bucket/data/<files>則可以向其中添加新文件並運行ETL作業-新文件將自動被拾取。

但是,如果數據到達新分區(如s3://bucket/data/<year>/<month>/<day>/<files>則您需要運行MSCK REPAIR TABLE <catalog-table-name>器或執行MSCK REPAIR TABLE <catalog-table-name>在Athena中使用MSCK REPAIR TABLE <catalog-table-name>在開始Glue ETL作業之前在Glue Catalog中注冊新分區。

當數據加載到DynamicFrame或spark的DataFrame中時,您可以應用一些過濾器以僅使用所需的數據。 如果仍要使用文件名,則可以使用input_file_name spark函數將其添加為列,然后應用過濾:

from pyspark.sql.functions import col, input_file_name

df.withColumn("filename", input_file_name)
  .where(col("filename") == "your-filename")

如果您控制文件的發送方式,建議您將其放入分區(指示日期的子文件夾,即/data/<year>/<month>/<day>//data/<year-month-day>/ ),以便您可以從在AWS Glue中使用下推謂詞中受益

暫無
暫無

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

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