Spark-Kafka集成中的并行性

时间:2018-06-25 23:40:06

标签: apache-spark apache-kafka

我想问一下setMaster("local[2]")Map("test1"->5)在以下代码中到底是什么意思

val sparkConf = new SparkConf().setAppName("KafkaWordCount").setMaster("local[2]")
val lines = KafkaUtils.createStream(ssc, "localhost:2181", "spark-streaming-consumer-group", Map("test1" -> 5))

据我所知setMaster("local[2]")表示会有两个火花线。是两个主节点还是工作节点? Map("test1" -> 5))表示主题具有的分区数。此数字是否等于local[]中提到的数字?或者如果我错了,有人可以更好地解释它们吗?

2 个答案:

答案 0 :(得分:0)

通过将local指定为主节点,您只有一个节点。它既是主人(驾驶员)又是工人(执行者)

关于地图,文档说

  

要使用的(topic_name-> numPartitions)的映射。每个分区都在其自己的线程中使用

理想情况下,是的,拥有尽可能多的使用者,就像Kafka具有最大并行度的分区一样,但是如果您使用的分区少,它将以循环方式使用数据

答案 1 :(得分:0)

  1. Local[2]意味着您将有2个线程作为工作线程。通常,local [k]表示:使用K个工作线程在本地运行Spark(理想情况下,将其设置为计算机上的内核数)。始终牢记,在Spark中,并行性是一个Worker级别。
  2. Map("test1" -> 5)的意思是[per-topic number of Kafka partitions to consume]。本质上,这就是说主题"test1"具有5个要使用的分区。