使用Spark Streaming计数

时间:2016-04-13 08:38:20

标签: apache-spark spark-streaming

我在Spark Streaming中有一个程序可以检测HDFS中的传入文件,我想要做的是分析每个文件并测试每个文件中是否存在两个单词,并且每一点都知道有多少文件包含这两个文件话。 我试图做的是:

val recherche1 = lines.map(x => (x.split(":")(0),x.split(":")(1))).filter(x => x._2 == "mot1")
    val recherche2 = lines.map(x => (x.split(":")(0),x.split(":")(1))).filter(x => x._2 == "mot2")
    val n1 = recherche1.count()
    val n2 = recherche1.count()
   val p = n1.foreachRDD(rdd => {cont1 = rdd.count()
    if (cont1 > 0)
    {n2.foreachRDD(rdd => {cont2 = rdd.count()
      if (cont2 > 0)
      {number = number + 1}
      else
      {number = number}
    })}
    })

我想要的是使用变量“number”的值,因为我无法在Spark Streaming中打印它,我尝试将它放在HBase中,不幸的是它不起作用,当我启动脚本时spark-submit,它返回错误:

adding new inputs transformations and output operations after starting a context is not supported

有谁知道我做错了什么或者能告诉我怎么做?

提前谢谢

1 个答案:

答案 0 :(得分:0)

我通过我的问题答案更改了问题中显示的代码的整个结构:filter the lines by two words Spark Streaming并且它有效,也许这个结构不适合Spark Streaming ..