[英]Guide to setup aws ETL glue pyspark job by step by step
我是 AWS 管道的初學者。
輸入我每天從 ERP 接收 S3 存儲桶RAW_input
中的csvs
表,時間可以更改。 例如- ERP1_folder
包含erp1_sales.csv
和erp1_customer.csv
和ERP2_folder
相同。
轉換然后我們需要應用tested
query
(SQLsfiles are in S3)
並應用mapping + structure cleaning
(Glue Jobs)
,例如對存儲桶中的each
表進行 int 更改、數據格式更改等,並在所需的destination
設置output
。
目的地: Output 的queries
預計在 redshift redshift tables
中。 (我們已經為它准備好了集群和數據庫)。
Req我想設置一個 pyspark 粘合作業,當任何文件上傳到 S3 存儲桶時自動觸發。
問題
input s3 trigger
+ mapping
+ cleaning
等所有工作嗎?aws lambda
function 來trigger
膠水作業?job
為每個selected table
分配query trigger
聽起來是一項艱巨的工作。AWS
膠水中的clusters
是手動創建的,我不知道它是否是唯一的方法。我不能擁有用戶secret access keys
,因此我只能通過訪問角色和策略在 AWS 服務內工作。 無需 CI/CD 解決方案
僅當您需要一些解釋時才請相關評論。
我試過:但我更喜歡在 S3 中循環遍歷不同的 Athena SQL 文件而不是類似的 ERP。 例如 erp000.sql 運行 erp000.csv 並將數據發送到 redshift
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql import SQLContext
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
# EXTRACT: Reading parquet data
df = spark.read.format("csv").load('s3://<bucket_name>/<file_path>/<file_name>.csv')
# TRANSFORM: some transformation
df = df.distinct()
# LOAD: write data to Redshift
df.write.format("jdbc").\
option("url", "jdbc:redshift://<host>:5439/<database>").\
option("dbtable", "<table_schema>.<table_name>").\
option("user", "<username>").\
option("password", "<password>").\
mode('overwrite').save()
print("Data Loaded to Redshift")
我將嘗試直接回答您的問題:
只有Glue作業才能完成輸入s3觸發器+映射+清洗等所有工作嗎?
觸發器按需或在特定時間啟動 ETL 作業執行。
我是否還需要在此過程中開發 aws lambda function 來觸發膠水作業?
沒有
按作業為每個選定表分配查詢觸發器聽起來是一項艱巨的工作。
最終表格到位后,您可以創建 Glue 作業,它可以按計划、觸發器或按需運行。 作業是執行 ETL 任務的業務邏輯。 因此,您根據選擇的表創建作業,而不是每個表的作業。
AWS 膠水中的集群是手動創建的,我不知道它是否是唯一的方法。
AWS Glue 只是一個無服務器 ETL 工具,您不需要管理集群,也不需要手動創建集群。
任何參考/pyspark 的 github 代碼都會有所幫助
https://aws.amazon.com/glue/getting-started/ https://docs.aws.amazon.com/glue/index.html https://docs.aws.amazon.com/glue/latest/dg /觸發作業.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.