A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

吴超老师 发表于 2013-4-4 18:05
你说的“打包处理”,我不清楚什么意思。另外,你说的“映射数”,是不是我所说的“函数”,我也不确定。
...

呵呵,学习了,学习了,黑马的课程还是一如既往的好。
回复 使用道具 举报
哈哈,谢谢分享啦!!!
回复 使用道具 举报
准备学,先备着
回复 使用道具 举报
顶一个:):D;P
回复 使用道具 举报
老师,3天的课程学习到的知识,能去应聘hadoop方面的工作吗??
回复 使用道具 举报
本帖最后由 吴超老师 于 2013-4-4 19:45 编辑
蔡兆军 发表于 2013-4-4 19:36
老师,3天的课程学习到的知识,能去应聘hadoop方面的工作吗??

说个真实的例子,在传智最近刚毕业的一个学生,专门应聘hadoop职位,只会安装hadoop、hbase,收到了两份offer。一份是一家纳斯达克上市的互联网公司,一家是小公司,6.5K。他寻求更高的职位,目前还没入职。

更多的例子通过javaEE找到工作的。刚进入公司,就要求学习hadoop。这些的例子太多了,都发生在刚毕业的这几个班。

通过三天的学习,你绝不是仅仅安装hadoop、hbase的水平的。
回复 使用道具 举报
老师讲得浅显易懂啊!
回复 使用道具 举报
吴超老师 发表于 2013-4-4 19:42
说个真实的例子,在传智最近刚毕业的一个学生,专门应聘hadoop职位,只会安装hadoop、hbase,收到了两份of ...

老师你这么一说,我就有信心了。 现在才刚开始学习linux,为hadoop做准备。
回复 使用道具 举报
也就是mapper和reduce都是一个函数啊,执行的结果不同。
回复 使用道具 举报
王广智 发表于 2013-4-4 20:44
也就是mapper和reduce都是一个函数啊,执行的结果不同。

:funk:我哪段文字给你留下这个印象了,罪过啊

mapper和reducer是两个不同的函数。看入参就知道了。
回复 使用道具 举报
本帖最后由 杜鹏飞 于 2013-4-4 23:00 编辑

前几天看到同事买了一本书,讲的就是Hadoop,厚的吓死人,于是乎没怎么去了解。刚刚看到了老师的这篇文章,写的不错,百度了一下发现map和reduce似乎是
python固有的函数,而且reduce的兰博德表达式只支持传递两个参数,老师一开始没指明,害我苦思reduce的实现很久,这是后话了。本人未学习过python,故打算
用lua实现下这两个函数。map很简单:
  1. function map(f,list)
  2.         function list_table(list)
  3.                 local iter = 0
  4.                 local len = table.getn(list)
  5.                 return function()
  6.                         iter = iter+1
  7.                         if iter <= len then return list[iter] end
  8.                 end
  9.         end


  10.         local ret={}
  11.         for ele in list_table(list) do
  12.                 table.insert(ret,f(ele))
  13.         end
  14.         return ret
  15. end
复制代码
我采用了迭代器+泛型for的形式,python好像支持泛型for(函数式程序设计语言好像都支持T_T)
接下来写reduce,reduce的一般形式是容易实现的,但是,我忽然想到了一个东西,那就是如果让reduce去返回一个中间值的表,会如何呢?见程序:
  1. function reduce(f,list)
  2.         function list_table(list)
  3.                 local iter = 0
  4.                 local len = table.getn(list)
  5.                 return function()
  6.                         iter = iter+1
  7.                         if iter <= len then return list[iter] end
  8.                 end
  9.         end

  10.         local ret={}
  11.         for ele in list_table(list) do
  12.                 if table.getn(ret) == 0 --问题在此!
  13.                 then table.insert(ret,ele)
  14.                 else table.insert(ret,f(ret[table.getn(ret)],ele)) end
  15.         end
  16.         return ret
  17. end
复制代码
我的这种写法做了O(n)次无谓的判断!我认为应该有更优秀的写法,能深刻利用泛型for的特点或巧妙地赋值来避免无谓的测试,如能指点,不胜感激。
回复 使用道具 举报
额,智商拙计了,一直在想怎么用泛型for来实现这个特性,其实简单地记录一个变量就可以了。
  1. function reduce(f,list)
  2.         function list_table(list)
  3.                 local iter = 0
  4.                 local len = table.getn(list)
  5.                 return function()
  6.                         iter = iter+1
  7.                         if iter <= len then return list[iter] end
  8.                 end
  9.         end

  10.         local ret = {}
  11.         local sum = 0
  12.         for ele in list_table(list) do
  13.                 sum = f(sum,ele)
  14.                 table.insert(ret,sum)
  15.         end
  16.         return ret
  17. end
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 偶然发现,必须鼓励~ 话说你怎么还是10分以.

查看全部评分

回复 使用道具 举报
杜鹏飞 发表于 2013-4-4 22:32
前几天看到同事买了一本书,讲的就是Hadoop,厚的吓死人,于是乎没怎么去了解。刚刚看到了老师的这篇文章, ...

兄弟神勇,工作中一定是黑马一匹。

在python中增加map、reduce函数就是为了替代这种大段代码的。其他语言也能类似实现,代码越多,可维护越差。二者相较,优劣立显
回复 使用道具 举报
吴超老师 发表于 2013-4-5 05:44
兄弟神勇,工作中一定是黑马一匹。

在python中增加map、reduce函数就是为了替代这种大段代码的。其他语 ...

小生年逾弱冠,正打算这次去云三呢,还要多向老师请教!
回复 使用道具 举报
学习了一下,
map函数 是对数据中的每个数据元素分别执行一次该函数操作,然后返回与之前定义的参数是相同类型。正如上面的m也是list类型的。
而reduce 函数是遍历该数据下所有的数据元素来执行一次该函数操作,然后返回对应的结果类型,而这结果类型不一定与参数类型一致。如上面的list类型和值15.
回复 使用道具 举报
吴超老师 发表于 2013-4-4 20:55
我哪段文字给你留下这个印象了,罪过啊

mapper和reducer是两个不同的函数。看入参就知道了。 ...

我语言表述错误,老师,是他们都是函数,没有他们是一个函数的意思,看来以后语言应该注意防止二义性。
回复 使用道具 举报
没看懂哎郁闷
回复 使用道具 举报
王广智 发表于 2013-4-5 21:01
我语言表述错误,老师,是他们都是函数,没有他们是一个函数的意思,看来以后语言应该注意防止二义性。 ...

经过你这一解释,我忽然看懂了你表达的意思。哈哈。

我在写短信、qq聊天、写文章等的时候,每句话都斟酌多次,看是否理解有歧义,自己觉得有问题的时候删掉重写。这纯属自己习惯,和你无关啊,呵呵
回复 使用道具 举报
过来学习科普知识
回复 使用道具 举报
老师辛苦啦啊啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马