Conectores de streaming compatíveis - Amazon EMR

Conectores de streaming compatíveis

Os conectores de streaming facilitam a leitura de dados provenientes de uma fonte de streaming e podem gravar dados em um coletor de streaming.

Estes são os conectores de streaming compatíveis:

Conector do Amazon Kinesis Data Streams

O conector do Amazon Kinesis Data Streams para Apache Spark permite criar aplicações e pipelines de streaming que consomem dados e gravam dados no Amazon Kinesis Data Streams. O conector comporta um consumo aprimorado de fan-out com um throughput de leitura dedicado de até 2 MB/segundo por fragmento. Por padrão, o Amazon EMR Sem Servidor 7.1.0 e versões posteriores incluem o conector, então você não precisa criar ou baixar nenhum pacote adicional. Para obter mais informações sobre o conector, consulte a página spark-sql-kinesis-connector no GitHub.

Confira a seguir um exemplo de como iniciar a execução de um trabalho com a dependência do conector do Kinesis Data Streams.

aws emr-serverless start-job-run \ --application-id <APPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --mode 'STREAMING' \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://<Kinesis-streaming-script>", "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=16g --conf spark.driver.cores=4 --conf spark.driver.memory=16g --conf spark.executor.instances=3 --jars /usr/share/aws/kinesis/spark-sql-kinesis/lib/spark-streaming-sql-kinesis-connector.jar" } }'

Para se conectar ao Kinesis Data Streams, você deve configurar a aplicação do EMR Sem Servidor com acesso à VPC e usar um endpoint da VPC para permitir acesso privado ou um gateway NAT para obter acesso público. Para obter mais informações, consulte Configuring VPC access (Configurar o acesso à VPC). Também é necessário garantir que o perfil de runtime do trabalho tenha as permissões de leitura e gravação necessárias para acessar os fluxos de dados essenciais. Para saber mais sobre como configurar um perfil de runtime de trabalho, consulte Job runtime roles for Amazon EMR Serverless. Para obter uma lista completa de todas as permissões necessárias, consulte a página spark-sql-kinesis-connector no GitHub.

Conector do Apache Kafka

O conector do Apache Kafka para streaming estruturado do Spark é um conector de código aberto da comunidade Spark, disponível em um repositório Maven. Esse conector facilita que as aplicações de streaming estruturado do Spark leiam e gravem dados no Apache Kafka autogerenciado e no Amazon Managed Streaming para Apache Kafka. Para obter mais informações sobre o conector, consulte o Structured Streaming + Kafka Integration Guide na documentação do Apache Spark.

O exemplo a seguir demonstra como incluir o conector do Kafka na solicitação de execução de trabalho.

aws emr-serverless start-job-run \ --application-id <APPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --mode 'STREAMING' \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://<Kafka-streaming-script>", "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=16g --conf spark.driver.cores=4 --conf spark.driver.memory=16g --conf spark.executor.instances=3 --packages org.apache.spark:spark-sql-kafka-0-10_2.12:<KAFKA_CONNECTOR_VERSION>" } }'

A versão do conector do Apache Kafka depende da versão do EMR Sem Servidor e da versão correspondente do Spark. Para encontrar a versão correta do Kafka, consulte o Structured Streaming + Kafka Integration Guide.

Para usar o Amazon Managed Streaming para Apache Kafka com autenticação do IAM, você deve incluir outra dependência para permitir que o conector do Kafka se conecte ao Amazon MSK com IAM. Para obter mais informações, consulte o aws-msk-iam-auth repository no GitHub. Também é necessário garantir que o perfil de runtime do trabalho tenha as permissões necessárias do IAM. O exemplo a seguir demonstra como usar o conector com autenticação do IAM.

aws emr-serverless start-job-run \ --application-id <APPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --mode 'STREAMING' \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://<Kafka-streaming-script>", "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=16g --conf spark.driver.cores=4 --conf spark.driver.memory=16g --conf spark.executor.instances=3 --packages org.apache.spark:spark-sql-kafka-0-10_2.12:<KAFKA_CONNECTOR_VERSION>,software.amazon.msk:aws-msk-iam-auth:<MSK_IAM_LIB_VERSION>" } }'

Para usar o conector do Kafka e a biblioteca de autenticação do IAM no Amazon MSK, você deve configurar a aplicação do EMR Sem Servidor com acesso à VPC. Suas sub-redes devem ter acesso à Internet e usar um gateway NAT para acessar as dependências do Maven. Para obter mais informações, consulte Configuring VPC access (Configurar o acesso à VPC). As sub-redes devem ter conectividade de rede para acessar o cluster do Kafka. Isso é verdade independentemente de o cluster do Kafka ser autogerenciado ou de você usar o Amazon Managed Streaming para Apache Kafka.