Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Spark处理请求_Apache Spark_Spark Streaming - Fatal编程技术网

Apache spark 使用Spark处理请求

Apache spark 使用Spark处理请求,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我想了解以下内容是否是Spark的正确用例 对应用程序的请求通过消息队列或包含一批请求的文件接收。对于消息队列,目前每秒大约有100个请求,尽管这可能会增加。有些文件只包含几个请求,但更常见的是有数百个甚至数千个请求 对每个请求的处理包括请求过滤、验证、查找参考数据和计算。有些计算引用规则引擎。完成这些操作后,将向下游系统发送一条新消息 我们希望使用Spark将处理分布到多个节点,以获得可伸缩性、弹性和性能 我设想它会这样工作: 将一批请求作为RDD加载到Spark中(在消息队列上接收的请求可能

我想了解以下内容是否是Spark的正确用例

对应用程序的请求通过消息队列或包含一批请求的文件接收。对于消息队列,目前每秒大约有100个请求,尽管这可能会增加。有些文件只包含几个请求,但更常见的是有数百个甚至数千个请求

对每个请求的处理包括请求过滤、验证、查找参考数据和计算。有些计算引用规则引擎。完成这些操作后,将向下游系统发送一条新消息

我们希望使用Spark将处理分布到多个节点,以获得可伸缩性、弹性和性能

我设想它会这样工作:

  • 将一批请求作为RDD加载到Spark中(在消息队列上接收的请求可能使用Spark流)
  • 将为过滤、验证、参考数据查找和数据计算编写单独的Scala函数
  • 第一个函数将被传递给RDD,并返回一个新的RDD
  • 然后,下一个函数将针对前一个函数的RDD输出运行
  • 一旦所有函数都完成,将对最终RDD运行for循环理解,以将每个修改的请求发送到下游系统
  • 以上听起来正确吗,或者这不是使用Spark的正确方法


    谢谢

    我们在一个小型物联网项目上做了类似的工作。我们测试了在3个节点上每秒接收和处理大约50K mqtt消息,这是轻而易举的事。我们的处理包括解析每个JSON消息,对创建的对象进行一些操作,并将所有记录保存到时间序列数据库中。 我们将批处理时间定义为1秒,处理时间约为300ms,RAM~100sKB。 一些关于流媒体的问题。确保下游系统是异步的,这样就不会出现内存问题。spark确实支持背压,但你需要让它发生。另一件事,尽量把状态控制在最低限度。更具体地说,您不应该保持任何随着输入的增长而线性增长的状态。这对于系统的可伸缩性非常重要

    给我印象最深的是你可以用spark轻松缩放。随着我们添加的每个节点,我们可以处理的消息频率呈线性增长

    我希望这有点帮助。
    祝你好运

    我也做了一些类似的事情。主要是,我们开发了一个web报废程序,但我们使用了Scala-Akka框架。它是一个基于参与者的框架,提供了即时的一致性、可扩展性。系统顶部有一个主参与者,它触发整个过程。创建MasterActor,进而为工人提供单元流程。单元过程是处理单个URL,清除非英语数据,并存储在Cassandra中。输出是一个未来的对象,并对其进行了一些回调。通常,参与者只发送/接收不可变的消息。您的系统看起来像是基于演员的。非常感谢,但我们正在特别考虑Spark,并想知道根据要求,它是否适合。我知道Spark比Akka提供了更高级别的抽象,但也可以同时使用它们。