多分区

时间:2017-06-08 21:16:06

标签: apache-spark spark-streaming

我正在使用Kafka Streaming从Kafka主题中读取数据,我想将流中获得的每个RDD加入到现有的RDD中。因此,我认为使用“转换”是最佳选择(除非任何人不同意,并提出更好的方法)

并且,我在Spark中的DStreams上阅读了以下“transform”方法示例:

val spamInfoRDD = ssc.sparkContext.newAPIHadoopRDD(...) // RDD containing spam information

val cleanedDStream = wordCounts.transform { rdd =>
  rdd.join(spamInfoRDD).filter(...) // join data stream with spam information to do data cleaning
  ...
}

但是,让我们说,我在Kafka主题中有3个分区,并且我调用3个消费者来读取这些分区。现在,这个转换方法将在三个独立的线程中并行调用。

我不确定在这种情况下加入RDD是否是线程安全的,这不会导致数据丢失。 (考虑到RDD是不可变的)

另外,如果你说它的线程安全,那么性能不会很低,因为我们正在创建这么多的RDD然后加入它们?

有人可以建议吗?

0 个答案:

没有答案