Scala 计算Spark(结构化)流式应用程序的数据处理速率

Scala 计算Spark(结构化)流式应用程序的数据处理速率,scala,apache-spark,streaming,spark-streaming,spark-structured-streaming,Scala,Apache Spark,Streaming,Spark Streaming,Spark Structured Streaming,TL;DR在查找Apache Spark数据管道可以处理的最大传入数据速率方面,最佳做法是什么 我已经为流数据编写了两个ApacheSpark管道(一个使用结构化流,另一个使用流)。管道从套接字连接接收流数据。出于本地测试目的,我通过两种方式将文件传输到ncat服务器: 我一行一行地用管道传输文件,每行之间有一点延迟 我一次通过管道传输大约5000个数据点的整个文件 这两种流方法(一种快速,另一种稍慢)对于流和结构化流管道都有非常不同的结果。延迟的逐行流(1)允许管道完全处理所有信息,而转储(2

TL;DR在查找Apache Spark数据管道可以处理的最大传入数据速率方面,最佳做法是什么

我已经为流数据编写了两个ApacheSpark管道(一个使用结构化流,另一个使用流)。管道从套接字连接接收流数据。出于本地测试目的,我通过两种方式将文件传输到ncat服务器:

  • 我一行一行地用管道传输文件,每行之间有一点延迟
  • 我一次通过管道传输大约5000个数据点的整个文件
  • 这两种流方法(一种快速,另一种稍慢)对于流和结构化流管道都有非常不同的结果。延迟的逐行流(1)允许管道完全处理所有信息,而转储(2)只导致处理的数据点的一小部分(大部分数据完全丢失)

    这似乎表明两个管道都存在“跟上”完整文件转储速率(2)的问题,管道的结果与传入数据的速率有关。很明显,我希望尽可能地接近这个最大速率,而不必经过


    我的问题是:如何找到Apache结构化流媒体/Apache流媒体管道设置的最大数据处理速率?

    阅读并理解您的问题后,您希望找到spark流媒体作业的处理速率。您有一个名为
    PIDRateEstimator
    的东西,它在启用
    背压时充当Spark应用程序的反馈回路。在旧的spark流媒体版本中,设置背压更有意义,在旧的spark流媒体版本中,您需要接收者使用来自流的消息。从Spark 1.3开始,您采用了接收器较少的“直接”方法,以确保更强的端到端保证。所以,您不需要担心背压,因为spark会进行大部分微调。请从下面的链接中阅读有关PIDS估计器的更多信息

    对于速率限制,您可以使用Spark配置变量
    Spark.streaming.kafka.maxRatePerPartition
    设置每批每个分区的最大消息数