定义mapper和reducer中都可用的数组列表

时间:2014-08-01 18:30:40

标签: hadoop arraylist mapreduce

在我的hadoop代码中,我需要定义一个Arraylist,Mapper和Reducer都可以访问它。对于其他变量,我可以使用参数。但我不知道arrayList!我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可以使用conf.setStrings(name,values ...)将字符串数组作为参数传递

Configuration conf = getConf();
ArrayList<String> list = new ArrayList<String>();
String[] arr = list.toArray(new String[list.size()]);
conf.setStrings("my-array-list", arr);

在reducer和mapper的setup函数中,您可以重新创建ArrayList

ArrayList<String> list = 
    new ArrayList<String>(Arrays.asList(conf.getStrings("my-array-list")));