Mac运行PySpark Streaming词频程序时nc -lk命令无效的解决方法
Mac环境运行PySpark Streaming Netcat词频示例报错解决方案
问题根因
Mac系统预装的是BSD分支版本的nc(netcat)工具,和Linux环境默认搭载的GNU版本netcat参数体系不兼容:教程中使用的-k参数作用是保持端口持续监听、支持多连接复用,是GNU版nc专属参数,BSD版nc无此参数,因此执行时会抛出nc: invalid option -- k错误。
你使用的PySpark示例代码本身没有逻辑问题,无需修改,可直接使用以下任意一种方案解决端口监听问题。
方案1:零依赖,使用系统自带nc实现等效效果
无需安装任何额外软件,在终端执行以下命令即可实现和nc -lk 9999完全一致的持续监听效果:
while true; do nc -l 9999; done
命令逻辑:通过shell循环在单次nc监听进程退出(连接断开)后自动重启监听,完全满足本地流计算测试的输入需求。
方案2:安装GNU版本netcat,与Linux命令完全兼容
如果本地已经安装Homebrew包管理器,可直接安装GNU版netcat,安装后原教程命令可直接使用:
- 执行安装命令:
brew install netcat
- 安装完成后,Homebrew部署的GNU版nc会优先于系统自带版本被调用,直接执行原教程命令即可正常启动监听:
nc -lk 9999
运行验证步骤
- 第一步:启动PySpark Streaming词频统计程序,确认程序正常初始化,按1秒的批次间隔输出空统计结果
- 第二步:新开一个终端窗口,执行上述任意一种方案的nc监听命令
- 第三步:在nc所在终端输入任意空格分隔的文本,回车后即可在PySpark运行窗口看到实时的词频统计输出
注意:测试过程中如果出现连接拒绝,先检查本机防火墙是否拦截了9999端口的本地回环连接,本地测试时可暂时关闭防火墙规避拦截问题。
内容的提问来源于stack exchange,提问作者Aaron Chatrath
相关产品推荐
相关产品推荐

