为了账号安全,请及时绑定邮箱和手机立即绑定

Spark Dataset - NumberFormatException:

Spark Dataset - NumberFormatException:

白板的微信 2022-08-17 16:47:30
当我尝试创建数据集并从中收集数据时,我遇到了一个奇怪的异常。Exception in thread "main" java.lang.NumberFormatException: Zero length BigInteger    at java.math.BigInteger.<init>(BigInteger.java:302)    at org.apache.spark.sql.catalyst.expressions.UnsafeRow.getDecimal(UnsafeRow.java:405)    at org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection.writeFields_3_3$(generated.java:298)    at org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection.apply(generated.java:35)    at org.apache.spark.sql.execution.LocalTableScanExec$$anonfun$unsafeRows$1.apply(LocalTableScanExec.scala:41)    at org.apache.spark.sql.execution.LocalTableScanExec$$anonfun$unsafeRows$1.apply(LocalTableScanExec.scala:41)    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)执行代码如下所示:List<SimplePojo> list ...Dataset<SimplePojo> ds = sparkSession.createDataset(list, Encoders.bean(SimplePojo.class))ds.collectoAsList();SimplePojo 类包含一个方法 getSomething(),这显然会导致异常。当我注释掉它时,一切都很好。public class SimplePojo {   private int id;   private OtherPojo otherPojo = new OtherPojo();   @Deprecated // required by park serialization. Use builder   public SimplePojo(){}   publi int getId(){      return id;   }   public String getSomething() {      return otherPojo.getSomething();   }   // sets ...}有没有人知道可能发生了什么?
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

事实证明,我不能有不属于豆子的get。我假设它是分析器期望的“豆类格式”。Introspector在发现一个没有各自属性的get时会发疯(根据Java版本的不同方式)。

由于我无论如何都找不到对分析器说“忽略此方法”,因此解决方案是避免与bean属性无关的getset


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 416 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号