2015-06-04 17 views
5

Spark Streaming'de sıralı işlemeyi uygulamak mümkün mü? Bizim kullanım durumumuz Kafka'dan, her konunun sırayla işlenmesi gereken olayları okumaktır.Spark Streaming'de sipariş işleme

Bunun mümkün olduğunu söyleyebildiğimden - RDD'lere ayrılmış her bir akış ve RDDS paralel olarak işlendiğinden, siparişin garanti edilmesinin bir yolu yoktur.

cevap

1

RDD'yi herhangi bir paralelliği kaldıran tek bir bölüm olarak zorlayabilirsiniz.

+0

Ancak DStream RDD'lere bölünmüş durumda - 2. RDD'nin ilk önce işlemeyi bitirmesi mümkün değil mi? – EugeneMi

+0

Belgelere göre "Varsayılan olarak, çıkış işlemleri birer birer yapılır. Ve bunlar uygulamada tanımlandıkları sırayla yürütülür." – Holden

1

"Bizim kullanım durumu her konu için işlenmesi gereken Kafka, olayları okuyor." Benim anlayış gereğince

, Dstreams separata her konu formları. Yani her Dstreams'i birbiri ardına işlemelisiniz.

Ancak büyük ihtimalle, her Kafka konusundan aldığınız her olayı sırayla işlemek istediğinizi kastediyorsunuz. Bu durumda, bir RDD'deki kayıt sırasına bağlı olmamalısınız, daha ziyade, her kaydı ilk olarak gördüğünüzde (muhtemelen yol yukarı yönde) zaman damgasıyla etiketlemeniz ve daha sonra sipariş vermek için bu zaman damgasını kullanmanız gerekir.

Kötü olan diğer seçimler var :)

  1. Holden anlaşılacağı gibi birbiri ardına bölümleri doldurmak, böylece, zaman alıcı dayalı bazı artan fonksiyonu ile
  2. Bölme tek bölüm halinde her şeyi koymak . Daha sonra zipWithIndex'i güvenilir bir şekilde kullanabilirsiniz.