Scala / Spark:在单词reduce中映射

时间:2015-03-31 21:10:53

标签: scala dictionary mapreduce apache-spark

line = 123 123 123

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

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

什么会被标记化的样子?

由于

1 个答案:

答案 0 :(得分:0)

这是一个非正式的解释:

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

语法

line=>(line.blah())

是定义函数的简写。输入参数声明为名称'line',输出将是计算表达式的结果。在你的表达式中,result是行中的第二个项目作为字符串,第三个项目作为整数(作为'元组'一起返回)。

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

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

file:List [String] = List(111 222 333,444 555 666)

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

tokenized:List [(String,Int)] = List((222,333),(555,666))

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

类型