B********4 发帖数: 7156 | 1 求教一道关于MapReduce的面试题:
有一个非常大的(>1TB)的String,放在Hadoop的多个Data Nodes上。如何用MapReduce
来reverse该String? |
y***x 发帖数: 148 | 2 典型的题阿,说了存在datanode上,那每个node reverse,最后拼接起来
wei代码很少,production code得查查doc语法 |
b**********5 发帖数: 7881 | 3 你最后的reducer怎么弄? reducer一个machine?string fit不到一个machine上
【在 y***x 的大作中提到】 : 典型的题阿,说了存在datanode上,那每个node reverse,最后拼接起来 : wei代码很少,production code得查查doc语法
|
y***x 发帖数: 148 | 4 跟interviewer讨论阿,看看人家想要什么
【在 b**********5 的大作中提到】 : 你最后的reducer怎么弄? reducer一个machine?string fit不到一个machine上
|
b**********5 发帖数: 7881 | 5 你provide些choices, 看看
【在 y***x 的大作中提到】 : 跟interviewer讨论阿,看看人家想要什么
|
B********4 发帖数: 7156 | 6 大概思路应该是这样的。
不过人家考我几个细节:
1)Key,Value 怎么定义?
2)你在mapper上倒序只是局部的,reducer必须在全局上倒序,你这个reducer如何知
道当初分配的datanode的顺序?
【在 y***x 的大作中提到】 : 典型的题阿,说了存在datanode上,那每个node reverse,最后拼接起来 : wei代码很少,production code得查查doc语法
|
s*****r 发帖数: 43070 | 7 肉姐,人家没要求结果存成一个file,显然是sharing啊,
【在 b**********5 的大作中提到】 : 你最后的reducer怎么弄? reducer一个machine?string fit不到一个machine上
|
y***x 发帖数: 148 | 8 最直接的可以记录每一段所在的整个string的offset
reverse后广播下,大伙一起更新
请大牛指正
【在 b**********5 的大作中提到】 : 你provide些choices, 看看
|
b**********5 发帖数: 7881 | 9 不需要remember offset, 就记住你的分段区好了, 我觉得。 比如你分了1000
blocks, 每个block的index记一下
【在 y***x 的大作中提到】 : 最直接的可以记录每一段所在的整个string的offset : reverse后广播下,大伙一起更新 : 请大牛指正
|
r*****s 发帖数: 1815 | 10 cut into segments with serial number
reverse each segment and then
sort in reverse order
MapReduce
【在 B********4 的大作中提到】 : 求教一道关于MapReduce的面试题: : 有一个非常大的(>1TB)的String,放在Hadoop的多个Data Nodes上。如何用MapReduce : 来reverse该String?
|
|
|
C********y 发帖数: 3 | 11
我也觉得,直接index就行了
key就是index
value就是reverse后的
需要和起来么?需要的话,就直接把所有的index从头到尾走一遍,然后按顺序扔到文
件里面就好了?
【在 b**********5 的大作中提到】 : 不需要remember offset, 就记住你的分段区好了, 我觉得。 比如你分了1000 : blocks, 每个block的index记一下
|
j**********3 发帖数: 3211 | |
u********s 发帖数: 1047 | |
a*****s 发帖数: 1121 | 14 牛肉姐MR题目还用想么?太tmd简单了。
就用default的inputsplit,输入kv是
offset of this line in a whole file : line content
map()做:line content reverse
输出kv是
-offset of this line in a whole file: reversed line content
reduce()直接输出value就是了,因为已经sort了。 |
f**********r 发帖数: 2137 | 15 只能保证每个reducer里的sort好,reducer之间不能保证
要么强制用一个reducer,要么用TotalOrderPartitioner
【在 a*****s 的大作中提到】 : 牛肉姐MR题目还用想么?太tmd简单了。 : 就用default的inputsplit,输入kv是 : offset of this line in a whole file : line content : map()做:line content reverse : 输出kv是 : -offset of this line in a whole file: reversed line content : reduce()直接输出value就是了,因为已经sort了。
|