Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: SEVERE: Failed to evaluate java.lang.NumberFormatException: For input string: "X" #44

Closed
Harpsichord1207 opened this issue Feb 1, 2019 · 2 comments

Comments

@Harpsichord1207
Copy link

I hava a pmml file which is generated by Knime, I deployed it to sever and I can get its info from server,such as

 curl http://localhost:8080/openscoring/model/dtclf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3473  100  3473    0     0   226k      0 --:--:-- --:--:-- --:--:--  226k{
  "id" : "dtclf",
  "miningFunction" : "classification",
  "summary" : "Tree model",
  "properties" : {
    "created.timestamp" : "2019-02-01T08:21:20.313+0000",
    "accessed.timestamp" : "2019-02-01T08:21:20.329+0000",
    "file.size" : 31382,
    "file.md5sum" : "3232e7cc5735f4ede12ca024496ed878"
  },
  "schema" : {
    "inputFields" : [ {
      "id" : "VMail Message",
      "dataType" : "integer",
      "opType" : "continuous",
      "values" : [ "[0.0, 51.0]" ]
    }, {
.......

but when I post a json to evaluate, it returned a error:

$ curl -X POST --data-binary @query.json -H "Content-type: application/json" http://localhost:8080/openscoring/model/dtclf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   603  100    47  100   556   3133  37066 --:--:-- --:--:-- --:--:-- 40200{
  "message" : "For input string: \"3.5\""
}

I tried to use python client, and got the same error.

The error traceback info on the server is

 Failed to evaluate
java.lang.NumberFormatException: For input string: "3.5"
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.base/java.lang.Long.parseLong(Long.java:692)
        at java.base/java.lang.Long.parseLong(Long.java:817)
        at org.jpmml.evaluator.TypeUtil.parseInteger(TypeUtil.java:103)
        at org.jpmml.evaluator.TypeUtil.parse(TypeUtil.java:63)
        at org.jpmml.evaluator.TypeUtil.parseOrCast(TypeUtil.java:47)
        at org.jpmml.evaluator.FieldValue.create(FieldValue.java:489)
        at org.jpmml.evaluator.FieldValueUtil.create(FieldValueUtil.java:100)
        at org.jpmml.evaluator.ValueParser.parse(ValueParser.java:25)
        at org.jpmml.evaluator.RichSimplePredicate.getValue(RichSimplePredicate.java:52)
        at org.jpmml.evaluator.FieldValue.compareTo(FieldValue.java:181)
        at org.jpmml.evaluator.FieldValue.compareTo(FieldValue.java:174)
        at org.jpmml.evaluator.PredicateUtil.evaluateSimplePredicate(PredicateUtil.java:162)
        at org.jpmml.evaluator.PredicateUtil.evaluatePredicate(PredicateUtil.java:81)
        at org.jpmml.evaluator.PredicateUtil.evaluate(PredicateUtil.java:71)
        at org.jpmml.evaluator.tree.TreeModelEvaluator.evaluateNode(TreeModelEvaluator.java:195)
        at org.jpmml.evaluator.tree.TreeModelEvaluator.handleTrue(TreeModelEvaluator.java:212)
        at org.jpmml.evaluator.tree.TreeModelEvaluator.handleTrue(TreeModelEvaluator.java:223)
        at org.jpmml.evaluator.tree.TreeModelEvaluator.evaluateTree(TreeModelEvaluator.java:159)
        at org.jpmml.evaluator.tree.TreeModelEvaluator.evaluateClassification(TreeModelEvaluator.java:128)
        at org.jpmml.evaluator.ModelEvaluator.evaluate(ModelEvaluator.java:535)
        at org.jpmml.evaluator.ModelEvaluator.evaluate(ModelEvaluator.java:503)
        at org.openscoring.service.ModelResource.evaluate(ModelResource.java:569)
        at org.openscoring.service.ModelResource.doEvaluate(ModelResource.java:417)
        at org.openscoring.service.ModelResource.evaluate(ModelResource.java:265)
        at jdk.internal.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:867)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:502)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
        at java.base/java.lang.Thread.run(Thread.java:834)

@vruusmann
Copy link
Member

java.lang.NumberFormatException: For input string: "3.5"

You cannot parse a String value of "3.5" to an integer (java.lang.Integer or java.lang.Long) value without loss of precision. In other words, what would happen to the fraction of "0.5"?

The KNIME software is generating invalid PMML documents when there are integer fields involved (both as inputs or outputs). Please open an issue request with the KNIME software instead.

@Harpsichord1207
Copy link
Author

Really thanks a lot, I solved the problem by changing "Integer" to "Double" in the pmml file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants