- 已启动master和worker
- 启动控制台并输入
nc-lk 9999
- Ran网络字数示例
/bin/run示例流。NetworkWordCount localhost 9999
- 写入时间
"你好世界你好">
netcat控制台。
- 但是我运行程序的控制台没有显示计算的数据(可能是数据没有流式传输(,当我停止程序时,它计算
你好,2世界,1
我也面临着同样的问题,为了让这个简单的流媒体示例发挥作用,我花了上周末的时间。终于可以成功地执行NetworkWorkCount程序了。我使用的是spark 1.5.2。以及Ubuntu14系统。
有多种方法可以解决这个问题,您可以使用其中任何一种:
-
在创建SparkConf变量时,您需要更新NetworkWorkCount.scala的代码(在/examples/src/main/scala/org/apache/spark/examples/streaming/内(,添加setMaster("local[2]"(,如下所示。
new SparkConf((.setMaster("local[2]"(.setAppName("NetworkWordCount"(
这种方法的问题是,为了使我们的修改有效,你必须以某种方式编译这些更新的代码,这对于那些刚刚开始学习spark并尝试运行这个简单示例的人来说可能是另一个问题。对他们来说,最简单的方法是下面的选项。
-
最简单的解决方案是将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]
-
现在打开第一个终端并启动netcat实用程序
nc-lk 9999
-
打开第二个终端并执行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