求各位指点,文件id(整数形式)是怎么实现的?

瀏覽次數:78 次
跳到第一則未讀訊息

Krasus C

未讀,
2014年7月20日 凌晨4:16:552014/7/20
收件者:cs40...@googlegroups.com
可以得到文件名,不过这个不知道怎么弄嘤嘤。试了试貌似用什么全局变量每次根据名字来+1的做法不对。。

郭行健

未讀,
2014年7月20日 凌晨4:54:242014/7/20
收件者:cs40...@googlegroups.com
需要建一个辅助字典……鉴于文件id是非负整数,直接把所有文件名(或者Path对象)放在一个数组中就行了。这个数组可以在Mapper的setup方法中创建,也可以预先做好并让Hadoop Runtime作为Distributed Cache发放给每一个Mapper Task(Distributed Cache的API可参见Hadoop: The Definitive Guide的第八章),后者的好处是文件数目特别多时不会导致内存溢出。

在 2014年7月20日星期日UTC+8下午4时16分55秒,Krasus C写道:
可以得到文件名,不过这个不知道怎么弄嘤嘤。试了试貌似用什么全局变量每次根据名字来+1的做法不对。。

张雨晴

未讀,
2014年7月20日 清晨5:59:232014/7/20
收件者:cs40...@googlegroups.com
求问如何得到所有文件的文件名?

Krasus C

未讀,
2014年7月20日 清晨7:32:382014/7/20
收件者:cs40...@googlegroups.com
是可以获得当前文件的文件名,你是想直接获取所有的然后来建表?
不过倒是启发了我。。可以搞个set,每次获取文件名就插入一个,然后用set的大小来作为id。。

在 2014年7月20日星期日UTC+8下午5时59分23秒,张雨晴写道:

Krasus C

未讀,
2014年7月20日 上午9:12:492014/7/20
收件者:cs40...@googlegroups.com
不过这样不知道顺序问题怎么办。。

在 2014年7月20日星期日UTC+8下午7时32分38秒,Krasus C写道:

杨博文

未讀,
2014年7月20日 上午9:24:342014/7/20
收件者:cs40...@googlegroups.com
虽然怎么听怎么简单粗暴但是好像也只能这么干了(╯‵□′)╯︵┻━┻

在 2014年7月20日星期日UTC+8下午4时54分24秒,郭行健写道:

Krasus C

未讀,
2014年7月20日 上午11:48:492014/7/20
收件者:cs40...@googlegroups.com
建立数组的时候,如果每次按照当前字典中的对象个数来增加的话,会不会每次任务执行会有不同的计数,比如文件A有时候是2,有时候是3..那样就应该再输出一份本次任务用的字典么。。。

在 2014年7月20日星期日UTC+8下午4时54分24秒,郭行健写道:

郭行健

未讀,
2014年7月20日 晚上11:59:322014/7/20
收件者:cs40...@googlegroups.com
一股脑儿获得全部文件名更好些吧……出错的概率会小一些。具体可以参照Hadoop: The Definitive Guide (3rd edition)第64页的方法。

在 2014年7月20日星期日UTC+8下午7时32分38秒,Krasus C写道:

Haoyan Huo

未讀,
2014年7月21日 上午8:45:502014/7/21
收件者:cs40...@googlegroups.com
在每个Mapper的Setup里面都获取一边列表有风险,最好在commit Job之间就最好这件事吧。
回覆所有人
回覆作者
轉寄
0 則新訊息