p*****2 发帖数: 21240 | 1 刚看了一下google的paper,现在想知道这个map操作在FP里边应该怎么做呢?只考虑单
机的情况
这个map是把一个map映射到另一个map,相同的key会有不同的value,而且key value
pair的数目也跟input不一样。这东西可以用FP语言里的一个map函数搞定吗?我怎么感
觉scala一下子搞不定呢? | h***t 发帖数: 2540 | 2 你如果是个普通的程序员,就别管Map和Reduce函数的设计了,交给Hadoop就行了,你
管好High Level的就行了。
【在 p*****2 的大作中提到】 : 刚看了一下google的paper,现在想知道这个map操作在FP里边应该怎么做呢?只考虑单 : 机的情况 : 这个map是把一个map映射到另一个map,相同的key会有不同的value,而且key value : pair的数目也跟input不一样。这东西可以用FP语言里的一个map函数搞定吗?我怎么感 : 觉scala一下子搞不定呢?
| p*****2 发帖数: 21240 | 3
我是没想明白。map,reduce不是从FP来的吗?但是FP的map跟mapreduce的map是
equivalent的吗?
【在 h***t 的大作中提到】 : 你如果是个普通的程序员,就别管Map和Reduce函数的设计了,交给Hadoop就行了,你 : 管好High Level的就行了。
| t****a 发帖数: 1212 | 4 相同key有不同value情况可以考虑成一个2级的广义表吧。比如求average的和
X (list
A 1, 2
B 3
C 4 5 6
)
(reduce + (map avg X))
【在 p*****2 的大作中提到】 : 刚看了一下google的paper,现在想知道这个map操作在FP里边应该怎么做呢?只考虑单 : 机的情况 : 这个map是把一个map映射到另一个map,相同的key会有不同的value,而且key value : pair的数目也跟input不一样。这东西可以用FP语言里的一个map函数搞定吗?我怎么感 : 觉scala一下子搞不定呢?
| p*****2 发帖数: 21240 | 5
没看明白。我的问题是在FP里面的map函数,跟mapreduce里边的map函数是等同的吗?
或者说FP里的map函数能完成mapreduce里的map函数吗?我看scala好像完成不了。你说
的这个意思是可以完成吗?
【在 t****a 的大作中提到】 : 相同key有不同value情况可以考虑成一个2级的广义表吧。比如求average的和 : X (list : A 1, 2 : B 3 : C 4 5 6 : ) : (reduce + (map avg X))
| B***i 发帖数: 724 | | p*****2 发帖数: 21240 | | A*******t 发帖数: 443 | 8 google mapreduce里面的map和reduce的想法是从fp里面来的
不过一般fp本身不会被编译到mapreduce的一个work上
【在 p*****2 的大作中提到】 : : 能还是不能呀?
| B***i 发帖数: 724 | 9 scalding 里就用map, flatMap 等等来 来实现 一般fp的mapping, , 用 groupby 来实
现 maping + reducing
【在 B***i 的大作中提到】 : https://github.com/twitter/scalding/wiki/Getting-Started
| t****a 发帖数: 1212 | 10 我觉得是等同的。map做的事情就是将计算(函数)传递给数据。这和map reduce里的
概念一致。
【在 p*****2 的大作中提到】 : : 能还是不能呀?
| X*K 发帖数: 87 | 11 mapreduce里的map概念是从FP里面的map,但我觉得不是一回事,mapreduce里的map在c
++里是用函数指针,在java里是用strategy pattern,用scala的map应该也是可以的,
前提是用scala实现一个类似hadoop的framework,但感觉这样实现效率可能有问题。
【在 p*****2 的大作中提到】 : : 能还是不能呀?
| p*****2 发帖数: 21240 | 12
在c
如果不考虑distributed的话,只考虑single thread。
mapreduce里的map
输入:key/value , 输出: key/value (key 可以重复)
那么scala里就是Map了。
Map.map 这个函数可以输出另外一个Map,并且存在duplicate key吗?或者一个key对
应一个list也可以。我看了看document貌似不行呀。或者其他FP语言可以做到吗?
我主要是这个不太明白。
【在 X*K 的大作中提到】 : mapreduce里的map概念是从FP里面的map,但我觉得不是一回事,mapreduce里的map在c : ++里是用函数指针,在java里是用strategy pattern,用scala的map应该也是可以的, : 前提是用scala实现一个类似hadoop的framework,但感觉这样实现效率可能有问题。
| X*K 发帖数: 87 | 13 偶觉得看具体map什么东西,可以通过几个map来实现,比如word count的map stage
scala> val inputLines = Array("This is the first line", "This is the second
line")
inputLines: Array[java.lang.String] = Array(This is the first line, This is
the second line)
scala> val mapResult = inputLines.map(x => x.split(" ").map(word => (word, 1
))).reduceLeft(_ ++ _)
mapResult: Array[(java.lang.String, Int)] = Array((This,1), (is,1), (the,1),
(first,1), (line,1), (This,1), (is,1), (the,1), (second,1), (line,1))
接下来reduce stage肯定是可以通过reduceLeft弄出来的。
【在 p*****2 的大作中提到】 : : 在c : 如果不考虑distributed的话,只考虑single thread。 : mapreduce里的map : 输入:key/value , 输出: key/value (key 可以重复) : 那么scala里就是Map了。 : Map.map 这个函数可以输出另外一个Map,并且存在duplicate key吗?或者一个key对 : 应一个list也可以。我看了看document貌似不行呀。或者其他FP语言可以做到吗? : 我主要是这个不太明白。
| p*****2 发帖数: 21240 | 14
second
is
1
),
不错。先记下。回头好好研究。所以一个map看来是搞不定的。
【在 X*K 的大作中提到】 : 偶觉得看具体map什么东西,可以通过几个map来实现,比如word count的map stage : scala> val inputLines = Array("This is the first line", "This is the second : line") : inputLines: Array[java.lang.String] = Array(This is the first line, This is : the second line) : scala> val mapResult = inputLines.map(x => x.split(" ").map(word => (word, 1 : ))).reduceLeft(_ ++ _) : mapResult: Array[(java.lang.String, Int)] = Array((This,1), (is,1), (the,1), : (first,1), (line,1), (This,1), (is,1), (the,1), (second,1), (line,1)) : 接下来reduce stage肯定是可以通过reduceLeft弄出来的。
|
|