2016-11-17 5 views
0

코드에 정의 된 UDF가 없으면 HiveContext와 Saxon을 사용하는 Spark 작업이 정상적으로 작동합니다. UDF 구현의 경우 - HiveContext 초기화가 오류와 함께 실패했습니다. 나는 중앙 받는다는 저장소에 아직 무료 버전을 출시되지 색슨 9.5.1.5에서 해결 색슨 \ java8 호환성에가, 거기에 들었HiveUDF + saxon 9.1.0.8 + Java8 = XPathFactory를 만들지 못했습니다.

Caused by: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: java.util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: jar:file:/JBOD_D19/hadoop/cdh/yarn/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: Illegal configuration-file syntax at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:102) at org.apache.hadoop.hive.ql.udf.xml.UDFXPathUtil.(UDFXPathUtil.java:41) at org.apache.hadoop.hive.ql.udf.xml.GenericUDFXPath.(GenericUDFXPath.java:53)

답변

1

수정, 이전과 Java8에서를 XPathFactory.newInstance() 메소드를 사용하여 classpath에서 Saxon을 릴리스하면이 오류가 발생합니다. 그러니 새 버전의 색슨을 사용하십시오. 현재 릴리스는 9.7.0.11입니다.

최근 Saxon의 최신 버전은 Maven에서 찾을 수 있습니다. Maven에서 다운로드 할 때 우리가 사용하는 타사 소프트웨어 구성 요소 중 일부가 요구되는 조건을 충족시키지 못하기 때문에 Saxon을 Maven에 배치하지 못했습니다. 법률 조항 및 조건을 배포하지 않고 JAR 파일을 배포해서는 안됩니다. Maven을 통한 배포가 여전히이 조건을 위반한다는 사실에도 불구하고 압도적 인 수요로 인해 결국 우리는 분개했습니다. 이러한 일에 관심이있는 조직은 Maven을 사용하지 않아야합니다.