AWS Glue PySpark 轉換參考 - AWS Glue

AWS Glue PySpark 轉換參考

AWS Glue 提供可以在 PySpark ETL 操作中使用的以下內建轉換。您的資料會在資料結構中從轉換傳遞至轉換,而此資料結構稱為 DynamicFrame,是 Apache Spark SQL DataFrame 的延伸。DynamicFrame 包含您的資料,而您可以參考其結構描述以處理資料。

這些轉換大多數也作為 DynamicFrame 類別的方法存在。如需詳細資訊,請參閱 DynamicFrame 轉換

資料整合轉換

對於 AWS Glue 4.0 及更高版本,使用 key: --enable-glue-di-transforms, value: true 建立或更新任務引數。

範例任務指令碼:

from pyspark.context import SparkContext from awsgluedi.transforms import * sc = SparkContext() input_df = spark.createDataFrame( [(5,), (0,), (-1,), (2,), (None,)], ["source_column"], ) try: df_output = math_functions.IsEven.apply( data_frame=input_df, spark_context=sc, source_column="source_column", target_column="target_column", value=None, true_string="Even", false_string="Not even", ) df_output.show() except: print("Unexpected Error happened ") raise

使用筆記本的範例工作階段

%idle_timeout 2880 %glue_version 4.0 %worker_type G.1X %number_of_workers 5 %region eu-west-1
%%configure { "--enable-glue-di-transforms": "true" }
from pyspark.context import SparkContext from awsgluedi.transforms import * sc = SparkContext() input_df = spark.createDataFrame( [(5,), (0,), (-1,), (2,), (None,)], ["source_column"], ) try: df_output = math_functions.IsEven.apply( data_frame=input_df, spark_context=sc, source_column="source_column", target_column="target_column", value=None, true_string="Even", false_string="Not even", ) df_output.show() except: print("Unexpected Error happened ") raise

使用 AWS CLI 的範例工作階段

aws glue create-session --default-arguments "--enable-glue-di-transforms=true"

DI 轉換:

Maven:將外掛程式與 Spark 應用程式綁定在一起

您可以在本機開發 Spark 應用程式時,透過在 Maven pom.xml 中新增外掛程式相依項,將轉換相依項與您的 Spark 應用程式和 Spark 發行版本 (3.3 版) 捆綁在一起。

<repositories> ... <repository> <id>aws-glue-etl-artifacts</id> <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url> </repository> </repositories> ... <dependency> <groupId>com.amazonaws</groupId> <artifactId>AWSGlueTransforms</artifactId> <version>4.0.0</version> </dependency>

您也可以按下文所示,改為直接從 AWS Glue Maven 成品下載二進位檔案,並將其包含在 Spark 應用程式中。

#!/bin/bash sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/AWSGlueTransforms/4.0.0/AWSGlueTransforms-4.0.0.jar -P /usr/lib/spark/jars/