scala的Sparkg编程实现从一台服务器的8888端口上接收课程数据,课程数据需手动在服务器的8888端口输入,输入的课程数据如表所示,每一条数据有2个字段,分别表示课程编号和课程名称,以空格分隔。现目标课程是“Hadoop”和“Spark”,需要查询两门课程及对应课程编号。
时间: 2024-02-09 17:08:42 浏览: 115
好的,根据你的要求,我可以给出一个基本的Scala的Spark程序实现,以下是代码:
```scala
import org.apache.spark.{SparkConf, SparkContext}
object CourseSearch {
def main(args: Array[String]): Unit = {
// 创建SparkConf和SparkContext
val conf = new SparkConf().setAppName("CourseSearch").setMaster("local[2]")
val sc = new SparkContext(conf)
// 从服务器上的8888端口接收数据
val data = sc.socketTextStream("localhost", 8888)
// 过滤出包含"Hadoop"或"Spark"的课程
val targetCourses = data.filter(line => line.contains("Hadoop") || line.contains("Spark"))
// 将目标课程的编号和名称提取出来,形成一个(key, value)对
val courseInfo = targetCourses.map(line => line.split(" ")).map(fields => (fields(0), fields(1)))
// 打印出目标课程的编号和名称
courseInfo.foreach(println)
// 停止SparkContext
sc.stop()
}
}
```
你只需要按照要求将课程数据手动输入到服务器的8888端口即可。程序会过滤出包含“Hadoop”或“Spark”的课程,并输出这些课程的编号和名称。
阅读全文