我有一个简单的Spark Streaming代码,我想尝试一下:
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}
object WordCountStreamingWithFlume {
def main(args: Array[String]) {
val ssc = new StreamingContext(new SparkConf().setMaster("local[2]").setAppName("socketstream"), Seconds(10))
val hostname = "localhost"
val mystreamRDD = ssc.socketTextStream(hostname, 7777)
mystreamRDD.print()
ssc.start()
ssc.awaitTermination()
}
}
我正在使用sbt
对其进行编译和打包。
在控制台(我正在使用Manjaro Linux)中,运行以下命令:
cat file.txt | nc localhost 7777
来将数据发送到机器中的端口7777
。
要运行编译后的Spark Streaming代码,我在Intellij IDEA中打开终端并执行以下操作:
spark-submit target/scala-2.11/simplesparkflumeexample_2.11-0.1.jar
但是出现以下错误:
WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
WARN Utils: Your hostname, ... resolves to a loopback address: 127.0.1.1; using <some_ip> instead (on interface enp2s0)
WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
WARN ReceiverSupervisorImpl: Restarting receiver with delay 2000 ms: Error connecting to localhost:7777
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
...
我也尝试过:
首先,检查sshd服务,它正在运行。
然后,检查7777端口,但我不确定如何确认这一点。我执行的唯一操作是打开两个控制台,并使用netcat
将数据从一个发送到另一个。结果是成功的,因为我可以看到我在控制台中键入的数据出现在另一个屏幕上。
有什么想法吗?
答案 0 :(得分:0)
在控制台(我使用的是Manjaro Linux)中,运行以下命令:cat file.txt | nc localhost 7777可以将数据发送到我机器中的端口7777。
它不是以这种方式运行,而是在我执行此操作时(添加-l
和-p
)起作用:
cat file.txt | nc -l localhost -p 7777