在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()]);
但是当我没有向列表添加任何值然后将其转换为数组时,它工作正常(使用空值)。有人可以指出我的错误。
答案 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
}