HiveUDF + saxon 9.1.0.8 + Java8 =创建XPathFactory失败



我的Spark工作与HiveContext和Saxon工作良好,除非没有udf定义在代码中。在UDF实现的情况下- HiveContext初始化失败并出现错误。我听说在saxon 9.5.1.5中解决了saxonjava8的不兼容性问题,该版本尚未在中央maven存储库中作为免费版本发布:

原因:java.lang.RuntimeException: XPathFactory#newInstance()为默认对象模型创建XPathFactory失败:http://java.sun.com/jaxp/xpath/dom with theXPathFactoryConfigurationException:javax.xml.xpath.XPathFactoryConfigurationException:java.util.ServiceConfigurationError: javax.xml.xpath.XPathFactory:jar文件:/JBOD_D19/hadoop/鼎晖/纱/nm/usercache/u23120d1/appcache/application_1477998759081_5017/container_e45_1477998759081_5017_01_000001/saxon-xpath-9.1.0.8.jar !/meta - inf/services/javax.xml.xpath.XPathFactory: 2:非法的配置文件语法javax.xml.xpath.XPathFactory.newInstance (XPathFactory.java: 102)org.apache.hadoop.hive.ql.udf.xml.UDFXPathUtil。(UDFXPathUtil.java: 41)在org.apache.hadoop.hive.ql.udf.xml.GenericUDFXPath。(GenericUDFXPath.java: 53)

正确,在类路径上使用Java8中的XPathFactory.newInstance()方法和较旧版本的Saxon将导致此失败。所以请使用更新版本的Saxon。当前版本是9.7.0.11。

Saxon的最新版本可以在Maven中找到。多年来,我们一直拒绝将Saxon放在Maven中,因为从Maven下载我们使用的某些第三方软件组件不满足所需的条件,这些条件要求您不能在不发布法律条款和条件的情况下发布JAR文件。尽管通过Maven发布仍然违反了这一条件,但由于需求巨大,我们最终还是做出了让步。关心这些事情的组织不应该使用Maven。

相关内容

  • 没有找到相关文章

最新更新