当我尝试创建数据集并从中收集数据时,我遇到了一个奇怪的异常。
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 ...
}
有没有人知道可能发生了什么?
温温酱
相关分类