在 scala 中使用 println
use println in scala
我正在尝试使用 println 以某种格式打印输出但无法获取。
val vgdataLines = sc.textFile("hdfs:///user/ashhall1616/bdc_data/assignment/t1/vgsales-small.csv")
val vgdata = vgdataLines.map(_.split(";"))
val countPublisher = vgdata.map(r => (r(4),1))
val totalcount= countPublisher.count().toInt
val reducePublisher = countPublisher.reduceByKey(_+_)
def toPercentage(x: Int): Double = {x * 100/totalcount}
val top50 = countPublisher.map(r => (r._1, r._2, toPercentage(r._2)))
val top50desc= top50.sortBy(_._2, false)
println(top50desc.take(50))
预期输出格式:
(育碧,3,15.0)
(动视,3,15.0)
(艺电,2,10.0)
(任天堂,2,10.0)
(Acclaim Entertainment,1,5.0)
(世嘉,1,5.0)
(3DO,1,5.0)
(Namco Bandai Games,1,5.0)
我得到的格式:
res1: Array[(String, Int, Double)] = Array((Sony Computer Entertainment,1,5.0), (Activision,1,5.0), (Nintendo,1,5.0), (Activision,1,5.0), (任天堂,1,5.0), (3DO,1,
5.0), (Sega,1,5.0), (TDK Mediactive,1,5.0), (Capcom,1,5.0), (Atari,1,5.0), (Konami Digital Entertainment,1,5.0), (Namco Bandai Games ,1,5.0), (艺电,1,5.0
), (Kalypso Media,1,5.0), (Ubisoft,1,5.0), (Ubisoft,1,5.0), (Electronic Arts,1,5.0), (Ubisoft,1,5.0), (Acclaim Entertainment,1, 5.0), (动视,1,5.0))
这是我使用 top50desc.take(50) 而不是 println(top50desc.take(50))
给出
val l = List[(String, Int, Double)](
("Ubisoft", 3, 15.0),
("Activision", 3, 15.0),
("Electronic Arts", 2, 10.0)
)
注意打印集合中每个元素的区别
l.foreach(println)
// (Ubisoft,3,15.0)
// (Activision,3,15.0)
// (Electronic Arts,2,10.0)
并打印集合本身
println(l)
// List((Ubisoft,3,15.0), (Activision,3,15.0), (Electronic Arts,2,10.0))
foreach
是我们希望对每个元素应用一些 副作用,例如打印的预期目的。
我正在尝试使用 println 以某种格式打印输出但无法获取。
val vgdataLines = sc.textFile("hdfs:///user/ashhall1616/bdc_data/assignment/t1/vgsales-small.csv")
val vgdata = vgdataLines.map(_.split(";"))
val countPublisher = vgdata.map(r => (r(4),1))
val totalcount= countPublisher.count().toInt
val reducePublisher = countPublisher.reduceByKey(_+_)
def toPercentage(x: Int): Double = {x * 100/totalcount}
val top50 = countPublisher.map(r => (r._1, r._2, toPercentage(r._2)))
val top50desc= top50.sortBy(_._2, false)
println(top50desc.take(50))
预期输出格式:
(育碧,3,15.0)
(动视,3,15.0)
(艺电,2,10.0)
(任天堂,2,10.0)
(Acclaim Entertainment,1,5.0)
(世嘉,1,5.0)
(3DO,1,5.0)
(Namco Bandai Games,1,5.0)
我得到的格式: res1: Array[(String, Int, Double)] = Array((Sony Computer Entertainment,1,5.0), (Activision,1,5.0), (Nintendo,1,5.0), (Activision,1,5.0), (任天堂,1,5.0), (3DO,1, 5.0), (Sega,1,5.0), (TDK Mediactive,1,5.0), (Capcom,1,5.0), (Atari,1,5.0), (Konami Digital Entertainment,1,5.0), (Namco Bandai Games ,1,5.0), (艺电,1,5.0 ), (Kalypso Media,1,5.0), (Ubisoft,1,5.0), (Ubisoft,1,5.0), (Electronic Arts,1,5.0), (Ubisoft,1,5.0), (Acclaim Entertainment,1, 5.0), (动视,1,5.0))
这是我使用 top50desc.take(50) 而不是 println(top50desc.take(50))
给出
val l = List[(String, Int, Double)](
("Ubisoft", 3, 15.0),
("Activision", 3, 15.0),
("Electronic Arts", 2, 10.0)
)
注意打印集合中每个元素的区别
l.foreach(println)
// (Ubisoft,3,15.0)
// (Activision,3,15.0)
// (Electronic Arts,2,10.0)
并打印集合本身
println(l)
// List((Ubisoft,3,15.0), (Activision,3,15.0), (Electronic Arts,2,10.0))
foreach
是我们希望对每个元素应用一些 副作用,例如打印的预期目的。