Ved*_*ant 0 scala apache-spark
我在S3上有大约1500个文件(每个文件看起来像这样:)
格式:
UserId\t ItemId:得分,ItemdId:得分,ItemId:得分\n用户
ID\t ItemId:得分,ItemdId:得分,ItemId:得分\n
我把文件读成:
import scala.io.Source
val FileRead = Source.fromFile("/home/home/testdataFile1").mkString
Run Code Online (Sandbox Code Playgroud)
这是我得到的一个例子:
1152 401368:1.006,401207:1.03
1184 401230:1.119,40049:1.11,40029:1.31
如何计算变量"得分"的平均值和标准差?
Dan*_*bos 13
虽然问题并不明确,但Apache Spark是一种以分布式方式执行此操作的好工具.我假设你已经建立了一个Spark集群.将文件读入RDD:
val lines: RDD[String] = sc.textFile("s3n://bucket/dir/*")
Run Code Online (Sandbox Code Playgroud)
以某种方式挑出"得分":
val scores: RDD[Double] = lines.map(_.split(":").last.toDouble).cache
Run Code Online (Sandbox Code Playgroud)
.cache将其保存在内存中.这样可以避免一直重新读取文件,但可以使用大量的RAM.如果你想换取RAM的速度,请将其删除.
计算指标:
val count = scores.count
val mean = scores.sum / count
val devs = scores.map(score => (score - mean) * (score - mean))
val stddev = Math.sqrt(devs.sum / (count - 1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12292 次 |
| 最近记录: |