在前期搭建好spark、scala平台和学习基于python的logistic流式机器学习例程后,这一周正式基于spark做一个基于logistic的流式机器学习的实现。
一、spark streaming例程
首先尝试spark streaming指导手册中自带的例程(链接http://spark.apache.org/docs/latest/streaming-programming-guide.html),由于网上的例子比较详细,在此不过多阐述,例程主要实现的是基于流数据的单词统计功能的实现,通过不断向本机的9999端口发送英文单词,spark streaming的NetworkWordCount例程则按照一定的频率对接收到的数据按照单词出现的次数进行统计,并打印出来。如下图所示。
二、给spark streaming发送数据
由于我们要实现基于logistic模型的流式学习得将学习的数据库通过TCP网络发往spark streaming端,因此我们通过C语言编写一个读取数据文件并开启TCP端口侦听spark streaming的连接,连接成功后再不断地向spark streaming端发送数据。
数据发送端的程序流程图如下图所示。