gpt4 book ai didi

Hadoop 为 java.nio.ByteBuffer 的键类型抛出 ClassCastException

转载 作者:可可西里 更新时间:2023-11-01 14:19:14 26 4
gpt4 key购买 nike

我正在为我的集群设置使用“hadoop-0.20.203.0rc1.tar.gz”。每当我设置 job.setMapOutputKeyClass(ByteBuffer.class);

并运行我得到以下异常的作业:

    12/01/13 15:09:00 INFO mapred.JobClient: Task Id : attempt_201201131428_0005_m_000001_2, Status : FAILED
java.lang.ClassCastException: class java.nio.ByteBuffer
at java.lang.Class.asSubclass(Class.java:3018)
at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:776)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:958)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:673)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:369)
at org.apache.hadoop.mapred.Child$4.run(Child.java:259)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.Child.main(Child.java:253)

我还注意到 ByteBuffer 是可比较的而不是可写的,这有什么区别吗?如果需要任何其他信息,请告诉我。

最佳答案

这是抛出异常的地方。这是 code来自 SVN。

public RawComparator getOutputKeyComparator() {
Class<? extends RawComparator> theClass = getClass("mapred.output.key.comparator.class",
null, RawComparator.class);
if (theClass != null)
return ReflectionUtils.newInstance(theClass, this);
return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class));
}

如果未在 JobConf 上定义 mapred.output.key.comparator.class 属性,则该键必须实现 WritableComparable 接口(interface)。 ByteBuffer 类没有实现 WritableComparable 接口(interface),所以异常。

顺便说一句,WritableComparable interface 是 Writable 和 Comparable 类的子接口(interface)。

关于Hadoop 为 java.nio.ByteBuffer 的键类型抛出 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com