gpt4 book ai didi

python - Apache spark 和 python lambda

转载 作者:太空狗 更新时间:2023-10-30 00:22:52 27 4
gpt4 key购买 nike

我有以下代码

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我从这里复制了示例

我无法理解这段代码,尤其是关键字

  1. 平面图,
  2. map 和
  3. 减少

谁能用通俗易懂的英语解释一下这是怎么回事。

最佳答案

map 是最简单的,它本质上是说对序列的每个元素执行给定的操作并返回结果序列(与 foreach 非常相似)。 flatMap 是同一件事,但不是每个元素只返回一个元素,而是允许返回一个序列(可以为空)。这是解释 difference between map and flatMap 的答案.最后,reduceByKey 采用聚合函数(意味着它采用相同类型的两个参数并返回该类型,也应该是可交换的和结合的,否则你会得到不一致的结果)用于聚合每个 V 用于 (K,V) 对序列中的每个 K

示例*:
减少 (lambda a, b: a + b,[1,2,3,4])

这表示用 + 聚合整个列表,这样就可以了

1 + 2 = 3  
3 + 3 = 6
6 + 4 = 10
final result is 10

按键归约是一样的,只是你对每个唯一的键进行归约。


所以在你的例子中解释一下

file = spark.textFile("hdfs://...") // open text file each element of the RDD is one line of the file
counts = file.flatMap(lambda line: line.split(" ")) //flatMap is needed here to return every word (separated by a space) in the line as an Array
.map(lambda word: (word, 1)) //map each word to a value of 1 so they can be summed
.reduceByKey(lambda a, b: a + b) // get an RDD of the count of every unique word by aggregating (adding up) all the 1's you wrote in the last step
counts.saveAsTextFile("hdfs://...") //Save the file onto HDFS

那么,为什么要这样计算字数,原因在于 MapReduce 编程范例是高度可并行化的,因此可以扩展到对 TB 甚至 PB 级数据进行这种计算。


我用python不多,如果有错告诉我。

关于python - Apache spark 和 python lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com