我只是想使用map创建一个pairRDD,我的输入文件包含3行数字,如下所示,
12
34个
36
并将其纳入val 行。
以下代码行,
val pairRDD=lines.map(x => (x(0).toInt,x(1).toInt))
生成
(49,50)
(51,52)
(51,54)
结果
val pairRDD=lines.map(x => (x(0),x(1)))
产生
(1,2)
(3,4)
(3,6)
结果。
所以,两行代码之间的唯一区别是,我在映射之前转换为Int,但是,我只是输入文件中的数字没有变化。
有人可以帮我理解吗?答案 0 :(得分:3)
区别在于scala Char.toInt 的工作原理,首先每行都是一个字符串,索引字符串,得到一个字符,Char.toInt方法获取该字符的ASCII值,所以'1'是49,例如:
val x = "12"
// x: String = 12
x(0)
// res12: Char = 1
x(0).toInt
// res13: Int = 49
要将数字字面转换为Int,您可以将其转换为String,然后转换为Int:
x(0).toString.toInt
// res15: Int = 1