Spark 2.2.0を使用します。
Pysparkを使用してAmazonSQSストリームをspark構造化ストリームにフィードするにはどうすればよいですか?
This 質問は、構造化されていないストリーミングとscala)について、カスタムレシーバーを作成することで回答しようとします。
pysparkでも同様のことが可能ですか?
spark.readStream \
.format("s3-sqs") \
.option("fileFormat", "json") \
.option("queueUrl", ...) \
.schema(...) \
.load()
Databricks によると、上記のレシーバーはS3-SQSファイルソースに使用できます。ただし、SQSの場合のみ、どのようにアプローチできますか。
AWS-SQS-Receive_Message からメッセージを受信することを理解してみました。ただし、ストリームをsparkストリーミングに直接送信する方法は明確ではありませんでした。
Amazon SQSについては何も知りませんが、 "pysparkを使用してAmazon SQSストリームをspark構造化ストリームにフィードするにはどうすればよいですか。" Spark構造化ストリーミング(別名Spark "Streams")を使用する外部メッセージングシステムまたはデータソース。
Spark構造化ストリーミングでは、データを定期的にプルするのはSparkの場合とは逆です(KafkaコンシューマーAPIが機能し、データをプルしない場合と同様です)。 )。
言い換えると、Spark「Streams」はAmazonSQSの「キュー」からのメッセージのもう1つのコンシューマーです。
外部システムをSpark "Streams"と統合するように求められたときはいつでも、クライアント/コンシューマーAPIを使用してシステムのクライアントの作成を開始します。
それができたら、次のステップは、外部システム用のカスタムストリーミング ソース を開発することです。上記のサンプルクライアントコードを使用したAmazonSQS。
カスタムストリーミングSource
を開発している間、次の手順を実行する必要があります。
Source
トレイトを実装するScalaクラスを記述します
Scalaクラス(カスタムSource
)をSpark SQLに登録するには、META-INF/services/org.Apache.spark.sql.sources.DataSourceRegister
ファイルを完全修飾クラス名で使用するか、format
で完全修飾クラス名を使用します。
カスタムストリーミングソースを持つことは、ソースを開発し(そして、オプションでSpark SQLに登録し)、format
メソッドを使用してSpark構造化ストリーミングアプリケーション(Python)で使用するという2つの部分からなる開発です。 。