"Il nostro caso d'uso è la lettura eventi da Kafka, in cui ogni argomento deve essere elaborata in ordine."
Come per la mia comprensione, ogni argomento forme Separata Dstreams. Quindi dovresti elaborare ogni Dspeams uno dopo l'altro.
Ma molto probabilmente si intende che si desidera elaborare ogni evento che si ottiene da 1 argomento Kafka in ordine. In tal caso, non dovresti dipendere dall'ordinamento del record in un RDD, piuttosto dovresti taggare ogni record con il timestamp quando li vedi per la prima volta (probabilmente modo a monte) e usare questo timestamp per ordinare in seguito.
avete altre scelte, che fanno male :)
- Come suggerisce Holden, mettere tutto in una partizione
- partizione con qualche funzione crescente in base alla ricezione di tempo, in modo da riempire le partizioni uno dopo l'altro . Quindi puoi usare zipWithIndex in modo affidabile.
fonte
2015-06-05 00:25:22
Ma il DStream è suddiviso in RDD: non è possibile che il secondo RDD finisca di essere elaborato prima del primo? – EugeneMi
Secondo la documentazione "Per impostazione predefinita, le operazioni di output vengono eseguite una alla volta e vengono eseguite nell'ordine in cui sono definite nell'applicazione." – Holden