我有一个火花流程序,它从我使用的套接字中读取数据:
nc -lk 9999
程序从套接字读取数据并排除“错误”消息。当我在套接字中手动编写时,它工作正常。
我创建了一个经常打印“错误”消息的 python 脚本。我将使用以下命令将结果保存在文件中:
stdbuf -oL python my_script.py &>> my_file.txt
并从套接字读取文件:
nc -lk 9999 | tail -f my_file.txt
一切正常,套接字会在后台更新文件时从文件中读取数据,但问题是我的 spark 程序没有捕获“错误”消息。
作为总结:当我在套接字中手动编写“错误”消息时,火花会捕获它们,但它不会从套接字捕获 python 脚本生成的“错误”消息。
实际上,如果我从套接字读取文件而不是输入文件,程序就不起作用。
有什么区别?
你输入的命令
意思是:获取 的输出
netcat
并将其传递给tail -f my_file.txt
. 但tail
不接受任何输入,它只是监视文件my_file.txt
。尝试相反,以便将 的输出
tail
馈送到nc
。