in

Nuevo: integración de Amazon Redshift con Apache Spark | Servicios web de Amazon

chispa apache es un sistema de procesamiento distribuido de código abierto que se usa comúnmente para grandes cargas de trabajo de datos. Los desarrolladores de aplicaciones Spark que trabajan en Amazon EMR, Amazon SageMaker y AWS Glue suelen utilizar conectores Apache Spark de terceros que les permiten leer y escribir datos con Amazon Redshift. Estos conectores de terceros no se mantienen, admiten ni prueban regularmente con varias versiones de Spark para producción.

Hoy anunciamos la disponibilidad general de Integración de Amazon Redshift para Apache Spark, lo que facilita la creación y ejecución de aplicaciones Spark en Amazon Redshift y Redshift Serverless, lo que permite a los clientes abrir el almacén de datos para un conjunto más amplio de soluciones de análisis y aprendizaje automático (ML) de AWS.

Con la integración de Amazon Redshift para Apache Spark, puede comenzar en segundos y crear sin esfuerzo aplicaciones Apache Spark en una variedad de lenguajes, como Java, Scala y Python.

Sus aplicaciones pueden leer y escribir en su almacén de datos de Amazon Redshift sin comprometer el rendimiento de las aplicaciones o la coherencia transaccional de los datos, así como las mejoras de rendimiento con optimizaciones pushdown.

La integración de Amazon Redshift para Apache Spark se basa en un proyecto de conector de código abierto existente y lo mejora en cuanto a rendimiento y seguridad, lo que ayuda a los clientes a obtener un rendimiento de las aplicaciones hasta 10 veces más rápido. Agradecemos a los colaboradores originales del proyecto que colaboraron con nosotros para que esto sucediera. A medida que hagamos más mejoras, seguiremos contribuyendo al proyecto de código abierto.

Introducción a Spark Connector para Amazon Redshift
Para comenzar, puede ir a los servicios de análisis y aprendizaje automático de AWS, usar el marco de datos o el código Spark SQL en un trabajo de Spark o Notebook para conectarse al almacén de datos de Amazon Redshift y comenzar a ejecutar consultas en segundos.

En este lanzamiento, Amazon EMR 6.9, EMR Serverless y AWS Glue 4.0 vienen con el conector preempaquetado y el controlador JDBC, y puede comenzar a escribir código. EMR 6.9 proporciona un bloc de notas de muestra y EMR Serverless también proporciona un Spark Job de muestra.

Primero, debe configurar la autenticación de AWS Identity and Access Management (AWS IAM) entre Redshift y Spark, entre Amazon Simple Storage Service (Amazon S3) y Spark, y entre Redshift y Amazon S3. El siguiente diagrama describe la autenticación entre Amazon S3, Redshift, el controlador de Spark y los ejecutores de Spark.

Para obtener más información, consulte Administración de acceso e identidad en Amazon Redshift en la documentación de AWS.

EMR de Amazon
Si ya tiene un almacén de datos de Amazon Redshift y los datos disponibles, puede crear el usuario de la base de datos y proporcionar el nivel correcto de concesiones al usuario de la base de datos. Para usar esto con Amazon EMR, debe actualizar a la última versión de Amazon EMR 6.9 que tiene el paquete spark-redshift connector. Selecciona el emr-6.9.0 lanzamiento cuando crea un clúster de EMR en Amazon EC2.

Puede usar EMR Serverless para crear su aplicación Spark usando el emr-6.9.0 liberación para ejecutar su carga de trabajo.

EMR Studio también proporciona un ejemplo de Jupyter Notebook configurado para conectarse a un punto de enlace sin servidor de Amazon Redshift que aprovecha los datos de muestra que puede usar para comenzar rápidamente.

Aquí hay un ejemplo de Scalar para construir sus aplicaciones tanto con Spark Dataframe como con Spark SQL. Use credenciales basadas en IAM para conectarse a Redshift y use el rol de IAM para descargar y cargar datos de S3.

// Create the JDBC connection URL and define the Redshift context
val jdbcURL = "jdbc:redshift:iam://<RedshiftEndpoint>:<Port>/<Database>?DbUser=<RsUser>"
val rsOptions = Map (
  "url" -> jdbcURL,
  "tempdir" -> tempS3Dir, 
  "aws_iam_role" -> roleARN,
  )
// Reference the sales table from Redshift 
val sales_df = spark
  .read 
  .format("io.github.spark_redshift_community.spark.redshift") 
  .options(rsOptions) 
  .option("dbtable", "sales") 
  .load() 
sales_df.createOrReplaceTempView("sales") 
// Reference the date table from Redshift using Data Frame 
sales_df.join(date_df, sales_df("dateid") === date_df("dateid"))
  .where(col("caldate") === "2008-01-05")
  .groupBy().sum("qtysold")
  .select(col("sum(qtysold)"))
  .show() 

Si Amazon Redshift y Amazon EMR están en diferentes VPC, debe configurar el emparejamiento de VPC o habilitar el acceso entre VPC. Suponiendo que Amazon Redshift y Amazon EMR se encuentran en la misma nube virtual privada (VPC), puede crear un trabajo de Spark o Notebook y conectarse al almacén de datos de Amazon Redshift y escribir código de Spark para usar el conector de Amazon Redshift.

Para obtener más información, consulte Usar Spark en Amazon Redshift con un conector en la documentación de AWS.

Pegamento AWS
Cuando utiliza AWS Glue 4.0, el conector Spark-Redshift está disponible como origen y como destino. En Glue Studio, puede usar un trabajo de ETL visual para leer o escribir en un almacén de datos de Redshift simplemente seleccionando una conexión de Redshift para usar dentro de un nodo de origen o de destino de Redshift integrado.

La conexión de Redshift contiene los detalles de la conexión de Redshift junto con las credenciales necesarias para acceder a Redshift con los permisos adecuados.

Para empezar, elige Trabajos en el menú izquierdo de la Estudio de pegamento consola. Con cualquiera de los modos Visual, puede agregar y editar fácilmente un nodo de origen o de destino y definir un rango de transformaciones en los datos sin escribir ningún código.

Elegir Crear y puede agregar y editar fácilmente un origen, un nodo de destino y el nodo de transformación en el diagrama de trabajo. En este momento, elegirá Amazon Redshift como Fuente y Objetivo.

Una vez completado, el trabajo de Glue se puede ejecutar en Glue para el motor Apache Spark, que utilizará automáticamente el último conector Spark-Redshift.

La siguiente secuencia de comandos de Python muestra un trabajo de ejemplo para leer y escribir en Redshift con un marco dinámico utilizando el conector spark-redshift.

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

print("================ DynamicFrame Read ===============")
url = "jdbc:redshift://<RedshiftEndpoint>:<Port>/dev"
read_options = {
    "url": url,
    "dbtable": dbtable,
    "redshiftTmpDir": redshiftTmpDir,
    "tempdir": redshiftTmpDir,
    "aws_iam_role": aws_iam_role,
    "autopushdown": "true",
    "include_column_list": "false"
}

redshift_read = glueContext.create_dynamic_frame.from_options(
    connection_type="redshift",
    connection_options=read_options
) 

print("================ DynamicFrame Write ===============")

write_options = {
    "url": url,
    "dbtable": dbtable,
    "user": user,
    "password": password,
    "redshiftTmpDir": redshiftTmpDir,
    "tempdir": redshiftTmpDir,
    "aws_iam_role": aws_iam_role,
    "autopushdown": "true",
    "DbUser": user
}

print("================ dyf write result: check redshift table ===============")
redshift_write = glueContext.write_dynamic_frame.from_options(
    frame=redshift_read,
    connection_type="redshift",
    connection_options=write_options
)

Cuando configura los detalles de su trabajo, solo puede usar el Pegamento 4.0: admite chispa 3.3 Python 3 versión para esta integración.

Para obtener más información, consulte Creación de trabajos de ETL con AWS Glue Studio y Uso de conectores y conexiones con AWS Glue Studio en la documentación de AWS.

Obtener el mejor rendimiento
En la integración de Amazon Redshift para Apache Spark, el conector Spark aplica automáticamente predicado y consulta pushdown para optimizar el rendimiento. Puede obtener una mejora del rendimiento utilizando el formato Parquet predeterminado para el conector utilizado para descargar con esta integración.

Como muestra el siguiente código de ejemplo, el conector Spark convertirá la función admitida en una consulta SQL y ejecutará la consulta en Amazon Redshift.

import sqlContext.implicits._val
sample= sqlContext.read
.format("io.github.spark_redshift_community.spark.redshift")
.option("url",jdbcURL )
.option("tempdir", tempS3Dir)
.option("unload_s3_format", "PARQUET")
.option("dbtable", "event")
.load()

// Create temporary views for data frames created earlier so they can be accessed via Spark SQL
sales_df.createOrReplaceTempView("sales")
date_df.createOrReplaceTempView("date")
// Show the total sales on a given date using Spark SQL API
spark.sql(
"""SELECT sum(qtysold)
| FROM sales, date
| WHERE sales.dateid = date.dateid
| AND caldate="2008-01-05"""".stripMargin).show()

La integración de Amazon Redshift para Apache Spark agrega capacidades pushdown para operaciones como ordenar, agregar, limitar, unir y funciones escalares para que solo los datos relevantes se muevan del almacén de datos de Redshift a la aplicación Spark consumidora, mejorando así el rendimiento.

Disponible ahora
La integración de Amazon Redshift para Apache Spark ahora está disponible en todas las regiones que admiten Amazon EMR 6.9, AWS Glue 4.0 y Amazon Redshift. Puede comenzar a usar la función directamente desde EMR 6.9 y Glue Studio 4.0 con la nueva versión Spark 3.3.0.

Pruébelo y envíenos sus comentarios en el AWS re: publicación para Amazon Redshift o a través de sus contactos habituales de soporte de AWS.

channy



Fuente

[Video] Galaxy Z Flip4 obtiene un cambio de imagen de Maison Margiela: desempaquetando su nuevo accesorio favorito

Red Dead Redemption 2 alcanza el pico de nuevos jugadores: la actualización de Navidad agrega más contenido

Red Dead Redemption 2 alcanza el pico de nuevos jugadores: la actualización de Navidad agrega más contenido