Spark流式传输示例对我不起作用:网络字数(可能数据没有被流式传输)


  1. 已启动master和worker
  2. 启动控制台并输入

nc-lk 9999

  1. Ran网络字数示例

/bin/run示例流。NetworkWordCount localhost 9999

  1. 写入时间

"你好世界你好">

netcat控制台。

  1. 但是我运行程序的控制台没有显示计算的数据(可能是数据没有流式传输(,当我停止程序时,它计算

你好,2世界,1

我也面临着同样的问题,为了让这个简单的流媒体示例发挥作用,我花了上周末的时间。终于可以成功地执行NetworkWorkCount程序了。我使用的是spark 1.5.2。以及Ubuntu14系统。

有多种方法可以解决这个问题,您可以使用其中任何一种:

  1. 在创建SparkConf变量时,您需要更新NetworkWorkCount.scala的代码(在/examples/src/main/scala/org/apache/spark/examples/streaming/内(,添加setMaster("local[2]"(,如下所示。

    new SparkConf((.setMaster("local[2]"(.setAppName("NetworkWordCount"(

这种方法的问题是,为了使我们的修改有效,你必须以某种方式编译这些更新的代码,这对于那些刚刚开始学习spark并尝试运行这个简单示例的人来说可能是另一个问题。对他们来说,最简单的方法是下面的选项。

  1. 最简单的解决方案是将MASTER变量设置为local[2],如下所示:

    a。更改为SPARK_HOME 的/conf目录

    b。使用提供的模板创建spark-env.sh:

     cp spark-env.sh.template spark-env.sh
    

    打开spark-env.sh并在其中设置以下配置:

     MASTER=local[2]
    
  2. 现在打开第一个终端并启动netcat实用程序

    nc-lk 9999

  3. 打开第二个终端并执行NetworkWordCount程序

    /bin/run示例流。NetworkWordCount localhost 9999

它将开始显示连续流,如下所示:

-------------------------------------------
Time: 1450077999000 ms
-------------------------------------------
(are,12)
(am,6)
(how,6)
(rashmit,6)
(apache,6)
(hello,5)
(spark,5)
(you,12)
(i,6)
(sparkhello,1)
...
-------------------------------------------
Time: 1450078000000 ms
-------------------------------------------
(are,2)
(am,1)
(how,1)
(rashmit,1)
(apache,1)
(hello,1)

这应该能在中工作

./bin/run-example --master local[4] streaming.NetworkWordCount localhost 9999

我们不需要任何代码更改或配置更改即可运行此示例。当我尝试在虚拟机中运行此示例时,遇到了这个问题。当我们作为主机的一部分运行相同的程序时,不会出现此问题。感谢Rashmit Rathod提供的关于这个问题的线索。

解决方案是添加"--master local[2]"作为运行示例命令行的一部分,如下所示

./bin/run-example --master local[2] org.apache.spark.examples.streaming.NetworkWordCount localhost 9999

最新更新