2016-04-28 4 views
0

私はDroolsを使ってSpark Streamingジョブとの統合を開始しました。私はDrools 6.3.0.Finalをkie-ciと使用しているので、sparkの仕事からkJarを遠隔に引き出し、kieスキャナを使用して新しいバージョンがあれば更新することができます。しかし、私は次の例外に走った:私はそれはそれは正しくKieContainerを作成した最新のjarファイルを引っ張るので、私は正常に火花を実行している私のsettings.xmlで私のリモートリポジトリを設定しているDrools Kie Scanner 6.3.0最終的な投げ込みProvisionException(RepositorySystemが見つかりません)

016-04-27 10:22:32,360 WARN [streaming-job-executor-0] Sisu (Logs.java:warn(394)) - Error injecting: org.apache.maven.execution.DefaultMavenExecutionRequestPopulator 
com.google.inject.ProvisionException: Guice provision errors: 

1) No implementation for org.apache.maven.repository.RepositorySystem was bound. 
while locating org.apache.maven.execution.DefaultMavenExecutionRequestPopulator 

1 error 
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:974) 
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1000) 
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) 
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:84) 
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:52) 
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70) 
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100) 
at org.eclipse.sisu.plexus.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:133) 
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:108) 
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55) 
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68) 
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) 
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018) 
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
at com.google.inject.Scopes$1$1.get(Scopes.java:59) 
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965) 
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011) 
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961) 
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82) 
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) 
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260) 
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252) 
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:246) 
at org.kie.scanner.embedder.PlexusComponentProvider.lookup(PlexusComponentProvider.java:42) 
at org.kie.scanner.embedder.MavenEmbedder.buildMavenExecutionRequest(MavenEmbedder.java:111) 
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:84) 
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:75) 
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:69) 
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:55) 
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:49) 
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:127) 
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:90) 
at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:88) 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:139) 

。何らかの理由でKieScannerを組み込むと失敗するだけです。

私のコードは次のようになります。

KieServices ks = KieServices.Factory.get(); 
ReleaseId releaseId = ks.newReleaseId("test", "test", "LATEST"); 
KieContainer kieContainer = ks.newKieContainer(releaseId); 
KieSession kSession = kieContainer.newKieSession(); 

KieScanner kScanner = ks.newKieScanner(kieContainer); 
kScanner.scanNow(); 
kSession.fireAllRules(); 
kSession.dispose(); 

私は高いのHadoopと他のパッケージスパークのバージョンを使用した場合、私は、Hadoopの1でスパーク1.6.1を実行している、それは別の例外で失敗します

(java.lang.NoSuchMethodError: com.google.inject.Binder.bindListener)

私はこれを解決できる理由や方法を知りませんか?

答えて

1

私はFlinkのためのuber jarを生成する同様の問題がありました。これは、私のmaven shade設定が不完全で、さまざまなjarファイルの魔法のMETA-INF/**設定ファイルが上書きされたために発生しました。次のトランスフォーマーをMavenシェード構成に追加することで対処しました。

<transformer implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer"/> 
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> 
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
    <resource>META-INF/sisu/javax.inject.Named</resource> 
</transformer> 
関連する問題