Python shell
當資料量還不需要分散式運算的計算量時,可以考慮使用 Python shell,Python shell 與 Lambda 相似,可以執行 Python Script 並且沒有計算時間的限制,運算能力最高可以到 4 core 16G RAM,所以在中量或是計算不複雜的情況下 Python shell 也是可以考慮的工具。
Spark
今天資料成長到一定量時就會需要分散式的運算資源支持 ETL 的工作,Spark 是分散式運算中常見的工具,在 ETL Job 上可以使用 PySpark 或 Scala 進行程式開發
Input 的部分可以選擇 Data Catalog 所建立的虛擬 Table 資料,Output 的部分可以選擇S3 或是 Sata Catalog 所連結的 Database,ETL Job 可以支援多個 Input,例如:訂單資料是CSV儲存在S3,會員資料儲存在 RDS,則透過 Data Catalog 的 Table,可以將兩個不同來源的資料進行 Join;Output 的部分也可以同時寫入 S3 和 RDS 或其他資料庫。
Spark streaming
Spark streaming 的 Input 目前只支援 Kinesis 與 Kafka,透過 Spark streaming,可以對 Streaming 資料進行即時分析,目前已有支援 PySpark 與 Scala 的程式開發。
在 AWS 上 Glue 可以當成資料處理的核心,透過 Glue 可以很方便的整合大部分常見的儲存點,並串接到 ETL Job 進行資料處理,因此加快了抓取資料與回存資料的速度,Glue 也提供順序排程的功能讓自動化的處理流程可以更為方便,減少在自動化流程設定上的困難度。