lyyl213 一条记录一行,使用01隔开的 mapfirst = function(k,v) { v.1 = strsplit(v,split='01')[[1]] keyval(v.1[2],v.1[5]) #v.1[2] id v.1[5] 喜好 } mapreduce(input='/user/hadoop/bs/tmp_01',map=mapfirst) 这是我的测试代码,但就是没有返回全部的不同id
皮皮米菲兔 回复 第14楼 的 lyyl213: <br /> v.1 = strsplit(v,split='01')[[1]]<br /> 这句不就是只取了第一条记录么。。。我上面给过例子了呀 你读进来好多记录,但是只保留第一条,最后得到的记录可不就少了嘛 </p>
lyyl213 还有如果 key=a,val=c(1:3) key=b,val=c(1:5) 如果是rmr的时候一条key对应一条val 但是rmr2是key在一起为一个向量 val为一向量,那么怎么判断哪个val属于哪个key, 难道要paste(val),还是有其它方法?
lyyl213 那我设置 rmr.options(keyval.length=1) 读入一行,返回一行,但是9142条数据只返回4987条 你解释的读入X条,只返回一条,相当于简单抽样了 如果是这样,还有什么意义?
皮皮米菲兔 回复 第19楼 的 lyyl213:确实没意义啊,但是你就是这样做的啊 ="= rmr.options(keyval.length=1)这个设置了没用,默认至少是100的。 关于这个,我之前提过issue,你可以参考一下 https://github.com/RevolutionAnalytics/RHadoop/issues/142
lyyl213 这也太酷毙了,我若是处理组合 c(1:20)在生成1-5个项的情况下就很多数据了 一次读入1000条这种数据,在一个map中岂不是 很多?一次读一条数据就会生成很多组合 默认读入1000条数据,那生成的数据可想而知 这种处理方式不合理啊
皮皮米菲兔 回复 第25楼 的 lyyl213:哈哈哈我遇到过这种组合的问题,不过我是在reduce里面,所以还有办法。 这是问题本身的特性决定的。不过感觉rmr2确实还有很多不够完善的地方,所以我测试了几天之后就放弃了。
lyyl213 我现在也一直在用rmr,((不过我是在reduce里面,所以还有办法?)) 在reduce是不是一条一条的读入数据,或者说是每次处理一个key? 还是默认的一次传入map后生成的1000条不同的key? 如是前一种限制一下项数就差不多了。 后一种也是一样不好处理