ref: https://issues.apache.org/jira/browse/SPARK-9370
The code to handle BigInteger types in org.apache.spark.sql.catalyst.expressions.UnsafeRowWriters.java and org.apache.spark.unsafe.Platform.java is dependant on the implementation of java.math.BigInteger eg: try { signumOffset = _UNSAFE.objectFieldOffset(BigInteger.class.getDeclaredField("signum")); magOffset = _UNSAFE.objectFieldOffset(BigInteger.class.getDeclaredField("mag")); } catch (Exception ex) { // should not happen } This is relying on there being fields "int signum" and "int[] mag" These implementaton fields are not part of the Java specification for this class so can not be relied upon. We are running Spark on IBM jdks and their spec-compliant implementation has different internal fields. This causes an abort when running on these java runtimes. There is also no guarantee that any future implentations of OpenJDK will maintain these field names. I think we need to find an implementation of these Spark functions that only relies on Java compliant classes rather than specific implementations. Any thoughts? Cheers,