Uso de conectores de orígenes de datos de Athena para Apache Spark
Algunos conectores de orígenes de datos de Athena están disponibles como conectores DSV2 de Spark. Los nombres de los conectores DSV2 de Spark tienen un sufijo -dsv2
(por ejemplo, athena-dynamodb-dsv2
).
A continuación, se muestran los conectores DSV2 disponibles actualmente, su nombre de clase .format()
de Spark y los enlaces a la documentación correspondiente de Amazon Athena Federated Query:
Conector DSV2 | Nombre de clase .format() de Spark | Documentación |
---|---|---|
athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider |
CloudWatch |
athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider |
Métricas de CloudWatch |
athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider |
CMDB |
athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider |
DynamoDB |
Para descargar archivos .jar
para los conectores DSV2, visite la página de GitHub Amazon Athena Query Federation DSV2<version>
(Versión <version>), Assets (Activos).
Especificación del archivo jar para Spark
Para usar los conectores DSV2 de Athena con Spark, envíe el archivo .jar
del conector al entorno de Spark que esté utilizando. En las siguientes secciones se describen casos específicos.
Athena para Spark
Para obtener información sobre cómo agregar archivos .jar
personalizados y configuraciones personalizadas a Amazon Athena para Apache Spark, consulte Uso de las propiedades de Spark para especificar una configuración personalizada.
Spark general
Para pasar el archivo .jar
del conector a Spark, utilice el comando spark-submit
y especifique el archivo .jar
en la opción --jars
, como en el siguiente ejemplo:
spark-submit \ --deploy-mode cluster \ --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/
some_version
/athena-dynamodb-dsv2-some_version
.jar
Amazon EMR Spark
Para ejecutar un comando spark-submit
con el parámetro --jars
en Amazon EMR, debe agregar un paso a su clúster de Amazon EMR Spark. Para obtener más información sobre cómo usar spark-submit
en Amazon EMR, consulte Add a Spark step (Agregar un paso de Spark) en la Guía de publicación de Amazon EMR.
ETL de AWS Glue para Spark
En el caso de ETL de AWS Glue, puede pasar la URL de GitHub.com del archivo .jar
al argumento --extra-jars
del comando aws glue start-job-run
. En la documentación de AWS Glue, se describe que el parámetro --extra-jars
toma una ruta de Amazon S3, pero el parámetro también puede tomar una URL HTTPS. Para obtener más información, consulte Referencia de parámetros de trabajos en la Guía para desarrolladores de AWS Glue.
Consulta del conector en Spark
Para enviar el equivalente a su consulta federada de Athena existente en Apache Spark, use la función spark.sql()
. Por ejemplo, supongamos que tiene la siguiente consulta de Athena que desea utilizar en Apache Spark.
SELECT somecola, somecolb, somecolc FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table WHERE somecola > 1
Para realizar la misma consulta en Spark mediante el conector DynamoDB DSV2 de Amazon Athena, utilice el siguiente código:
dynamoDf = (spark.read .option("athena.connectors.schema", "some_schema_or_glue_database") .option("athena.connectors.table", "some_ddb_or_glue_table") .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") .load()) dynamoDf.createOrReplaceTempView("ddb_spark_table") spark.sql(''' SELECT somecola, somecolb, somecolc FROM ddb_spark_table WHERE somecola > 1 ''')
Especificación de parámetros
Las versiones DSV2 de los conectores de orígenes de datos de Athena utilizan los mismos parámetros que los conectores de orígenes de datos de Athena correspondientes. Para obtener información sobre los parámetros, consulte la documentación del conector de origen de datos de Athena correspondiente.
En su código de PySpark, use la siguiente sintaxis para configurar sus parámetros.
spark.read.option("athena.connectors.conf.
parameter
", "value
")
Por ejemplo, el siguiente código establece el parámetro disable_projection_and_casing
del conector DynamoDB de Amazon Athena en always
.
dynamoDf = (spark.read .option("athena.connectors.schema", "some_schema_or_glue_database") .option("athena.connectors.table", "some_ddb_or_glue_table") .option("athena.connectors.conf.disable_projection_and_casing", "always") .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") .load())