2016-07-15 7 views
0

私は通常のルーチン:sc.broadcast(x)を知っています。Spark Streamingマッピング関数で変数をブロードキャストする方法は?

現在のところ、Spark Streamingは、チェックポイント設定のブロードキャスト変数をサポートしていません。

公式ガイドは解決策を提供します:http://spark.apache.org/docs/latest/streaming-programming-guide.html#accumulators-and-broadcast-variables。ただし、このソリューションはforeachRDD関数でのみ使用できます。

ここでは、マッピング関数(flatMapToPairなど)でこのようにブロードキャストする必要がある大規模または直列化不可能な変数(KafkaProducerなど)を使用したいが、目に見えるRDD変数がないため、Sparkコンテキスト遅延評価された変数をブロードキャストする。 DStreamを作成するための初期コンテキストまたはDStreamから取得されたコンテキストを使用すると、タスクは直列化できなくなります。

マッピング関数でブロードキャスト変数を使用するにはどうすればよいですか?または、マッピング関数で大規模または直列化不可能な変数を使用するための回避策はありますか?

答えて

0

私は最終的に解決策を見つける。これらの機能を使用するには、マップ関数ではなく変換関数を使用します。変換関数では、手動でRDDを処理してマップ関数を適用するので、RDDの参照を取得してSparkコンテキストを取得できます。

関連する問題