我正在学习 Apache Flink。这是Flink的Hello World:https://ci.apache.org/projects/flink/flink-docs-stable/getting-started/tutorials/local_setup.html
这个例子是一个程序,每5秒统计一次单词数。
如果我们想运行这个示例,我们需要执行以下步骤:
- 在一个终端上执行
nc -l 9000
(A); - 在另一个终端上执行
./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9000
(B); - 转到终端 A 并输入一些单词。
如果我们Ctrl-c
在终端A,这个样本将会被终止。
我想知道是否可以在终端A以编程方式输入单词。例如,我想lol
在终端A每秒输入单词,我该怎么办?
下面的代码将不起作用。
#!/bin/bash
while true; do
echo 'lol' | nc -l 9000
sleep 1
done
当然,我可能会尝试修改来SocketWindowWordCount.java
这样做,但目前,由于某种原因,我无法更改java代码。
答案1
将整个循环通过管道传输到nc
:
while true; do
echo 'lol'
sleep 1
done | nc -l 9000
这将启动 的单个实例nc
,侦听端口 9000 上的连接,并每秒向其发送一次“lol”。
请注意,“lol”会累积,直到连接打开,因此您可能会看到连接后立即发送许多“lol”。您可以在开始时添加延迟:
(sleep 5
while true; do
echo 'lol'
sleep 1
done) | nc -l 9000