如何使用Scala在文件中保存值
我试图在文件中保存一个值,但不断出现错误 我已经试过了如何使用Scala在文件中保存值,scala,apache-spark,Scala,Apache Spark,我试图在文件中保存一个值,但不断出现错误 我已经试过了 .saveAsTextFile("/home/amel/timer")` 减速器功能 val startReduce=System.currentTimeMillis() val y=sc.textFile(“/home/amel/10MB”).filter(!.contains(“NULL”)).filter(!.contains(“NULL”)) val er=x.map(行=>{ val cols=行分割(“,”) (cols(1)
.saveAsTextFile("/home/amel/timer")`
减速器功能
val startReduce=System.currentTimeMillis()
val y=sc.textFile(“/home/amel/10MB”).filter(!.contains(“NULL”)).filter(!.contains(“NULL”))
val er=x.map(行=>{
val cols=行分割(“,”)
(cols(1).拆分(“—”)0+“,“+cols(2)+”,“+cols(3),1)
}).reduceByKey(+).map(x=>x.1+”,“+x.2)
er.collect.foreach(println)
val endReduce=System.currentTimeMillis()
val durationReduce=((endReduce startReduce)/1000).saveAsTextFile(“home/amel/timer/”)
我收到的错误在这条线上
val-durationReduce=((endReduce-startReduce)/1000).saveAsTextFile(“home/amel/timer/”)
它说:savastextfile不是Long的成员
我想要的输出是一个数字savastextfile
是类org.apache.spark.rdd.rdd
()
表达式((endReduce startReduce)/1000)
的类型为Long
,因此它没有此方法,因此出现错误“saveAsTextFile不是Long
的成员”
这个答案适用于以下情况:
基本上情况是,你有一个Int,你想把它写入一个文件。您的第一个想法是跨机器集群创建一个分布式集合,该集合只包含这个Int,并让这些机器以分布式方式将Int写入一组文件
我认为这不是正确的方法。不要使用Spark将Int保存到文件中。相反,您可以使用PrintWriter:
val out = new java.io.PrintWriter("filename.txt")
out.println(finalvalue)
out.close()
savastextfile
是类org.apache.spark.rdd.rdd
()
表达式((endReduce startReduce)/1000)
的类型为Long
,因此它没有此方法,因此出现错误“saveAsTextFile不是Long
的成员”
这个答案适用于以下情况:
基本上情况是,你有一个Int,你想把它写入一个文件。您的第一个想法是跨机器集群创建一个分布式集合,该集合只包含这个Int,并让这些机器以分布式方式将Int写入一组文件
我认为这不是正确的方法。不要使用Spark将Int保存到文件中。相反,您可以使用PrintWriter:
val out = new java.io.PrintWriter("filename.txt")
out.println(finalvalue)
out.close()
Long
没有名为saveAsTextFile
的方法如果要编写长值,有很多方法,一个简单的方法是使用javaPrintWriter
val duration = ((endReduce-startReduce)/1000)
new PrintWriter("ome/amel/timer/time") { write(duation.toString); close }
如果仍要使用spark RDDsaveAsTextFile
,则可以使用
sc.parallelize(Seq(duration)).saveAsTextFile("path")
但是仅仅写一个值是没有意义的。Long
没有名为saveAsTextFile
的方法如果您想写一个长值,有很多方法,一个简单的方法就是使用javaPrintWriter
val duration = ((endReduce-startReduce)/1000)
new PrintWriter("ome/amel/timer/time") { write(duation.toString); close }
如果仍要使用spark RDDsaveAsTextFile
,则可以使用
sc.parallelize(Seq(duration)).saveAsTextFile("path")
但是仅仅写一个值是没有意义的。错误很明显,endReduce startReduce
提供了long,您如何在long
中使用saveAsTextFile
saveAsTextFile
是RDD中的一种方法。错误很明显,endReduce startReduce
提供了long,以及如何在long
中使用saveAsTextFile
savastextfile
是RDD中的一个方法。我使用的是Scala。我使用的是Scala。