正如Flink文档中所提到的,通过使用
打开本地套接字,我能够从文本服务器读取文本输入amar@admin:~$ nc -l 12345
然后使用
在Flink程序上接收它DataStream<String> text = env.socketTextStream("localhost", 12345);
text.print();
env.execute();
但是,由于我正在模拟某些场景,所以我想从VM(最后是各种VM)获取数据流并将其发送到在主机操作系统上运行的CEP程序。
所以,我已经使用vagrant ssh
来宾操作系统的主机名是精确的64
使用ifconfig = 10.0.2.15的IP地址
现在,我想要做的是看看我是否可以从VM发送一些数据并在Flink程序中接收它,就像我在本地环境中一样。
我使用
在来宾操作系统上打开了Netcat套接字vagrant@precise64:~$ nc -l 12345
我试图通过使用主机程序接收它,但出现错误
DataStream<String> text = env.socketTextStream("precise64", 12345);
text.print();
env.execute();
我也尝试过上面的tiny64@10.0.2.15,但我认为我做错了。
任何想法,我应该如何处理从VM发送DataStream到主机Flink程序
建议非常欢迎,提前谢谢!
答案 0 :(得分:1)
你可以试试这个:
<强> 1.Program:强>
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.time.Time
object WindowWordCount {
def main(args: Array[String]) {
val env = StreamExecutionEnvironment.getExecutionEnvironment
val text = env.socketTextStream("localhost", 9999)
val counts = text.flatMap { _.toLowerCase.split("\\W+") filter { _.nonEmpty } }
.map { (_, 1) }
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1)
counts.print
env.execute("Window Stream WordCount")
}
}
2.运行上述程序。你可以开始这个。
nc -lk 9999
这样可行。