Scala / Spark:在 word reduce 中映射

Scala / Spark: map in word reduce

行 = 123 123 123

地图是如何工作的?行的作用是什么?

val tokenized =file.map(line=>(line.split("\t")(1),line.split("\t")(2).toInt))

代币化后会是什么样子?

谢谢

这是一个非正式的解释:

当将 map() 方法应用于一种事物的集合(例如文件中的行集合)并提供函数(例如从给定字符串中提取第二项和第三项)时,将 return 将该函数应用于原始集合中每个项目的结果集合(例如,包含每行中的第二个和第三个项目的元组集合)。

语法

line=>(line.blah())

是定义函数的shorthand。输入参数被声明为名称 'line',输出将是计算表达式的结果。在您的表达式中,结果是作为字符串的行中的第二项,作为整数的第三项(return 合并为 'tuple')。

这是一个可以粘贴到 scala 交互式解释器中的变体,它会伪造文件并用空格而不是制表符拆分行:

val file = List("111 222 333", "444 555 666")

文件:列表[String] = 列表(111 222 333, 444 555 666)

val tokenized =file.map(line=>(line.split(" ")(1),line.split(" ")(2).toInt))

标记化:List[(String, Int)] = List((222,333), (555,666))

所以,这里你看到结果的类型是 List[(String, Int)]