簡體   English   中英

AWS Glue 作業不寫入 S3

[英]AWS Glue jobs not writing to S3

我剛剛一直在玩弄 Glue,但還沒有讓它在現有的 S3 存儲桶中成功創建一個新表。 該作業將無錯誤地執行,但 S3 中從來沒有任何 output。

以下是自動生成的代碼:

glueContext.write_dynamic_frame.from_options(frame = applymapping1, 
connection_type = "s3", connection_options = {"path": 
"s3://glueoutput/output/"}, format = "json", transformation_ctx = 
"datasink2") 

已經嘗試了這個的所有變體 - 使用文件名(尚不存在),在存儲桶的根文件夾中,尾部斜杠和沒有。 正在使用的角色具有對 S3 的完全訪問權限。 嘗試在不同區域創建存儲桶。 雖然沒有創建文件。 控制台再次說它成功了。

您的代碼是正確的,只需驗證applymapping1 DF中是否有任何數據? 你用這個命令檢查:applymapping1.toDF().show()

正如@Drellgor 在他對上一個答案的評論中所建議的那樣,除非您絕對不想處理舊文件,否則請確保禁用“作業書簽”。

文檔

“AWS Glue 通過保留作業運行中的狀態信息來跟蹤在 ETL 作業的前一次運行期間已經處理過的數據。這種持久化的狀態信息稱為作業書簽。作業書簽幫助 AWS Glue 維護狀態信息並防止重新處理舊數據。”

有同樣的問題。 幾天后,似乎 Glue 作業隨機寫入 s3,有時卻沒有,我發現了這個線程。 @Sinan Erdem 的建議解決了我的問題。

從 aws 文檔:

作業書簽用於跟蹤已經處理過的源數據,防止重新處理舊數據。 作業書簽可用於 JDBC 數據源和一些 Amazon Simple Storage Service (Amazon S3) 源。 工作書簽與工作相關。 如果刪除作業,則其作業書簽也會被刪除。

您可以將 Glue Spark ETL 作業的作業書簽倒回到任何以前的作業運行,這允許您的作業重新處理數據。 如果要使用同一個作業重新處理所有數據,可以重置作業書簽

還發現: How to rewind Job Bookmarks on Glue Spark ETL job?

您需要編輯您的 IAM 角色。 您應該定義您的 IAM 角色可以寫入和讀取 S3。

  1. 轉到您的 AWS 控制台
  2. 轉到 IAM
  3. 政策
  4. 編輯政策
  5. 除了獲取對象之外,還為 S3 添加以下放置和刪除對象。
  6. 然后保存

確保您使用您編輯的 IAM 角色運行 AWS Glue。 祝你好運。

"Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"

暫無
暫無

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

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