在 Databricks 中运行流口水

问题描述 投票:0回答:1

我正在尝试实施一个 PoC,以使用 Scala 语言在 Azure Databricks 上运行 Drools。我假设 Drools 没有等效的 python 客户端。我知道我已经测试过的其他可用的基于 BRE python 的框架。

尝试在 Scala notebook 中运行示例代码时,我不断收到以下异常。

我已经导入了所有必要的 Drools 库。

Drools 库版本:7.1.17.0-Final

Databricks:11.3 LTS(包括 Apache Spark 3.3.0、Scala 2.12)

有人可以告诉我做错了什么吗?

有人遇到过工作示例吗?

如有任何支持,我将不胜感激。

NoClassDefFoundError: Could not initialize class org.kie.internal.io.ResourceFactory$LazyHolder
import collection.JavaConverters._
import org.slf4j.ILoggerFactory
import org.kie.internal.io.ResourceFactory
import org.drools.core.impl.KnowledgeBaseFactory
import org.kie.api.io.ResourceType
import org.kie.api.runtime.KieSession
import org.kie.api.runtime.rule.RuleContext
import org.kie.internal.builder.KnowledgeBuilderFactory
import org.kie.api.internal.utils.ServiceRegistry

class SampleService {
    
  val resource= ResourceFactory.newClassPathResource("sample.drl")
  val kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder()
  kbuilder.add(resource,ResourceType.DRL)

  val kbase = KnowledgeBaseFactory.newKnowledgeBase()
  kbase.addPackages(kbuilder.getKnowledgePackages())

 def runAllRulesFor(): String = {
    val session = kbase.newKieSession()
    null  
  }

}

def result = new DroolsRuleService().runAllRulesForUDF;
println(result)

java scala databricks drools azure-databricks
1个回答
0
投票

我建议使用没有反射依赖的 Drools 8,使用引擎的静态版本(没有反射)。

此外,在编译时而不是在运行时代码生成规则的可执行模型。

如果您可以提供上述内容的复制者,请随时在 drools-usage 邮件列表上分享以获得额外支持。

© www.soinside.com 2019 - 2024. All rights reserved.