1

コードでUDFが定義されていない限り、HiveContextとSaxonを使用したSparkジョブは正常に動作します。UDF 実装の場合 - HiveContext の初期化がエラーで失敗しました。saxon 9.5.1.5 で解決された saxon\java8 の非互換性があると聞きましたが、これは中央の Maven リポジトリで無料バージョンとしてまだリリースされていません。

原因: java.lang.RuntimeException: XPathFactory#newInstance() は、デフォルト オブジェクト モデルの XPathFactory を作成できませんでした: http://java.sun.com/jaxp/xpath/domXPathFactoryConfigurationException の場合: 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_1477998759087_001_150 /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) で

4

1 に答える 1

2

クラスパスで古いリリースの Saxon で Java8 の XPathFactory.newInstance() メソッドを使用すると、このエラーが発生します。そのため、Saxon の新しいバージョンを使用してください。現在のリリースは 9.7.0.11 です。

Saxon の最近のリリースは Maven にあります。Saxon を Maven に入れることに長年抵抗してきました。なぜなら、Maven からのダウンロードは、私たちが使用するサードパーティ ソフトウェア コンポーネントの一部に必要な条件を満たさないからです。つまり、法的条件を配布せずに JAR ファイルを配布してはならないということです。Maven を介した配布は依然としてこの条件に違反しているという事実にもかかわらず、圧倒的な需要のために最終的には容赦しませんでした。これらのことを気にする組織は Maven を使用すべきではありません。

于 2016-11-17T23:21:45.393 に答える