【问题标题】:hadoop jaxb classpath issuehadoop jaxb 类路径问题
【发布时间】:2014-10-15 12:27:44
【问题描述】:

我在 hadoop 作业中看到了这一点:

2014-08-21 09:26:57,216 ERROR org.apache.hadoop.mapred.Child: Error running child : java.lang.ExceptionInInitializerError
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
    at com.sun.proxy.$Proxy61.describeVehicle(Unknown Source)
    at com.company.inventory.externalapi.externalsoapclient.ExternalClientImpl.getFromSoap(ExternalClientImpl.java:46)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.populateExternalCache(ExternalIngestionProcess.java:112)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:93)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:38)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:140)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
Caused by: java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.internal.bind.api.JAXBRIContext
    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.<clinit>(SOAPFaultBuilder.java:550)
    ... 16 more

这个问题看起来类似于this issue,除了我没有在我的类路径上提供任何 jax-b 依赖项。但是,它看起来确实像 hadoop。

有没有办法强制 hadoop 使用 jdk jaxb jar 或只使用它自己提供的 jaxb jar,但不能同时使用两者?

【问题讨论】:

    标签: java hadoop jaxb


    【解决方案1】:

    坦率地说,这听起来不像是 Hadoop 错误。正如您已经提到的,正确的解决方案是修复类路径,但试试这个:

    -Djavax.xml.bind.JAXBContext=com.sun.xml.internal.bind.v2.ContextFactory

    Additional details

    【讨论】:

    • 你说得对,严格来说这不是 Hadoop 错误,更多的是类路径的烦恼。我想我确实尝试过该属性,但它不起作用。
    • 对不起,这是我唯一的解决方案。据我所知,没有其他方法可以指定要使用的工厂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多