使用Scala的Spark Streaming编程实现从一台服务器的8888端口上接收课程数据,课程数据需手动在服务器的8888端口输入,输入的课程数据如表所示,每一条数据有2个字段,分别表示课程编号和课程名称,以空格分隔。现目标课程是“Hadoop”和“Spark”,需要查询两门课程及对应课程编号。 121 Hadoop
时间: 2024-02-05 20:12:08 浏览: 11
以下是使用Scala的Spark Streaming编程实现从一台服务器的8888端口上接收课程数据,查询目标课程的代码:
```scala
import org.apache.spark._
import org.apache.spark.streaming._
object CourseStreaming {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("CourseStreaming").setMaster("local[*]")
val ssc = new StreamingContext(conf, Seconds(1))
val lines = ssc.socketTextStream("localhost", 8888)
val courses = lines.map(_.split(" ")).filter(course => course(1) == "Hadoop" || course(1) == "Spark")
courses.print()
ssc.start()
ssc.awaitTermination()
}
}
```
在代码中,我们首先创建了一个SparkConf对象,并设置了应用程序的名称和运行模式。接着,我们创建了一个StreamingContext对象,指定了批次间隔为1秒钟。
然后,我们使用socketTextStream方法从服务器的8888端口接收课程数据,并将每条数据按照空格分隔成两个字段。接着,我们使用filter方法筛选出目标课程,并使用print方法打印出课程编号和名称。
最后,我们启动StreamingContext,并等待程序终止。