在 Spark Streaming 中,流数据将由运行在工作线程上的接收器接收。数据会定期推送到数据 block 中,接收方会将收到的BlockInfo发送给驱动程序。我想知道spark Streaming会将 block 分发到集群中吗?(也就是说,它会使用分布式存储策略)。如果不将数据分布在整个集群中,如何保证工作负载平衡?(想象一下,我们有一个由 10 个节点组成的集群,但只有几个接收器)
最佳答案
据我所知,数据是由运行接收器的工作节点接收的。它们不分布在其他节点上。
如果您需要在进一步处理之前对输入流进行重新分区(跨集群平衡),您可以使用
inputStream.repartition(<number of partitions>)
您可以在 Spark 文档中阅读有关并行级别的更多信息
https://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning
关于apache-spark - Spark 流数据如何存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30660955/