将List <string>转换为Text Array MapReduce时出现ArrayStoreException

时间:2015-06-23 14:57:00

标签: java mapreduce

在mapreduce代码中,将list转换为(org.apache.hadoop.io.Text)Text类型的数组时,接收ArrayStoreException。

List<String> testList= new ArrayList<String>();
            testList.add("testData1");
            testList.add("testData2");

            Text[] testArray=testList.toArray(new Text[testList.size()]);

但是当我没有向列表添加任何值然后将其转换为数组时,它工作正常(使用空值)。有人可以指出我的错误。

1 个答案:

答案 0 :(得分:1)

您无法将String存储在Text数组(Text[])中。

您可以将它们存储在String数组(String[])中:

String[] testArray=testList.toArray(new String[testList.size()]);
  

当我没有向列表中添加任何值然后将其转换为数组时,它可以正常工作

它只能在这种情况下创建一个空数组,因此不会存储任何内容。

如果必须生成包含来自源Text[]的数据的List<String>,则必须遍历List并自行生成Text实例:

Text[] testArray = new Text[testList.size()];
for (int i = 0; i < testList.size(); i++) {
    testArray[i] = new Text(testList.get(i)); // assuming the Text class 
                                              // has such a constructor 
}