火花推拉窗性能

时间:2019-05-16 23:44:01

标签: scala apache-spark

我已经为Apache Kafka中的流中的传入事件设置了管道。

Spark连接到Kafka,从主题中获取信息流并处理一些“简单”的聚合任务。

当我尝试构建应该具有低延迟刷新(在1秒以下)的服务时,我已经在Scala中构建了一个简单的Spark流媒体应用。

val windowing = events.window(Seconds(30), Seconds(1))

val spark = SparkSession
      .builder()
      .appName("Main Processor")
      .getOrCreate()

import spark.implicits._

// Go into RDD of DStream
windowing.foreachRDD(rdd => {
    // Convert RDD of JSON into DataFrame
    val df = spark.read.json(rdd)      

    // Process only if received DataFrame is not empty
    if (!df.head(1).isEmpty) {

    // Create a view for Spark SQL
    val rdf = df.select("user_id", "page_url")

    rdf.createOrReplaceTempView("currentView")

    val countDF = spark.sql("select count(distinct user_id) as sessions from currentView")

    countDF.show()
}

它按预期工作。我担心的是此时的性能。出于测试目的,Spark在4个CPU的Ubuntu服务器上运行。

CPU使用率一直保持在35%左右。我想知道流中的传入数据是否为500 msg / s,CPU使用率将如何变化?它会增长经验。或以线性方式?

如果您能在这种情况下与Apache Spark交流经验,

最后一个开放的问题是,是否将滑动窗口间隔设置为500ms(如我所愿)?我的意思是,Spark流功能似乎是新鲜的,并且批处理架构可能是真正实时数据处理的限制,不是吗?

0 个答案:

没有答案