【发布时间】:2020-06-10 21:14:36
【问题描述】:
我是 Spark 的新手,我找不到足够的信息来理解 Spark 中的某些内容。我正在尝试在 scala 中编写伪代码(例如这些示例http://spark.apache.org/examples.html)
给出了一个包含数据的文件。每行都有一些数据:编号、课程名称、学分和分数。
123 Programming_1 10 75
123 History 5 80
我正在尝试计算每个学生(人数)的平均值。平均是每门课程学分的总和*学生所学的分数 除以学生修读的每门课程学分的总和。忽略任何具有 mark==NULL 的行。假设我有一个函数 parseData(line),它用字符串创建一行以记录 4 个成员:数字、课程名称、学分、标记。
我到现在为止的尝试
data=spark.textFile(“hdfs://…”)
line=data.filter(mark=> mark != null)
line= line.map(line => parseData(line))
data = parallelize(List(line))
groupkey= data.groupByKey()
((a,b,c)=>(a, sum(mul(b,c))/ sum(b))
但我不知道如何读取具体值并使用它们来计算每个学生的平均值。可以用数组吗?
【问题讨论】:
标签: scala apache-spark apache-spark-sql rdd