【发布时间】:2014-08-25 20:12:25
【问题描述】:
我有以下代码
file = spark.textFile("hdfs://...")
counts = file.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile("hdfs://...")
http://spark.apache.org/examples.html我已经从这里复制了示例
我无法理解这段代码,尤其是关键字
- 平面图,
- 地图和
- 减少
有人可以用简单的英语解释发生了什么。
【问题讨论】:
-
我不是专家,但我认为 flatMap 从嵌套结构(单词行列表?)构建列表,map 将该函数应用于所有元素,reduceByKey 通过键对元素进行分组(这里相同的话,我猜)并成对应用函数(这里是一个总和)。这可能会计算文本中每个单词的出现次数。
-
如果您使用函数式语言进行函数式编程,事情会变得更加简洁和易于阅读。 IE。我强烈建议使用 Scala 而不是 OO 脚本语言。 Scala 更强大,对 Spark 的性能略高一些,并且更容易挖掘 Spark 代码。你的代码就变成了:
spark.textFile("hdfs://...").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).saveAsTextFile("hdfs://...")
标签: python apache-spark