我是火花和斯卡拉的业余爱好者,谁能告诉我这个语法有什么作用? :
val encoded_props = props.map( _.split(" ")).map(t => Map((t(1),t(0).toLong))).reduce((a1,a2)=>a1++a2)
由于
答案 0 :(得分:2)
请参阅,
Spark使用Scala的一些功能原则,如地图,缩减等等......
让我展示它是如何运作的。
假设您有一个文件:
123 A
456 B
此文件将加载到变量props
当您在map( _.split(" "))
中为地图中的每一行映射时,您将在空间caractere中分割数据。它会在你的RDD中创建一个像这样的字符串(String,String):
(("123", "A"), ("456", "B"))
其他地图map(t => Map((t(1),t(0).toLong)))
表示每个元组中的每个元素,您将选择0元素和1元素来创建Map objec。并且您将索引0字符串转换为Long。这是输出
Map("A" -> 123)
Map("B" -> 456)
Map是scala中的一个集合,您可以使用++
将项目附加到该集合,因此每个相同的键都会使用reduce,它会将数据附加到Map。像所有A一样,A会像这样相互追加:
Map("A" -> 123, "A" -> 669)
我建议你在文档中检查这个过程的每个元素。