O AWS Glue fornece as transformações integradas a seguir que você pode usar em operações de ETL do PySpark. Os seus dados passam de transformação para transformação em uma estrutura de dados chamada DynamicFrame, que é a extensão de uma DataFrame
do Apache Spark SQL. O DynamicFrame
contém os dados, e você referencia o esquema para processar os dados.
A maioria dessas transformações também existe como métodos da classe DynamicFrame
. Para obter mais informações, consulte Transformações DynamicFrame.
Transformações da integração de dados
Para o AWS Glue 4.0 e versões posteriores, crie ou atualize argumentos de trabalho com key: --enable-glue-di-transforms, value: true
.
Exemplo de script de trabalho:
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
Exemplo de sessões usando cadernos
%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
Exemplo de sessões usando AWS CLI
aws glue create-session --default-arguments "--enable-glue-di-transforms=true"
Transformações DI:
Maven: empacotar o plug-in com aplicações do Spark
Você pode empacotar a dependência de transformações com suas aplicações e distribuições do Spark (versão 3.3) adicionando a dependência de plug-in em seu pom.xml
do Maven enquanto desenvolve aplicações do Spark localmente.
<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>
Ou pode baixar os binários diretamente dos artefatos do AWS Glue Maven e incluí-los na aplicação do Spark como indicado a seguir.
#!/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/