Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.0.0, 2.1.0, 2.2.0, 2.3.3, 2.4.0, 3.0.0
Description
HighlyCompressedMapStatus uses RoaringBitmap to record the empty blocks. But RoaringBitmap-0.5.11 couldn't be ser/deser with unsafe KryoSerializer.
We can use below UT to reproduce:
test("kryo serialization with RoaringBitmap") { val bitmap = new RoaringBitmap bitmap.add(1787) val safeSer = new KryoSerializer(conf).newInstance() val bitmap2 : RoaringBitmap = safeSer.deserialize(safeSer.serialize(bitmap)) assert(bitmap2.equals(bitmap)) conf.set("spark.kryo.unsafe", "true") val unsafeSer = new KryoSerializer(conf).newInstance() val bitmap3 : RoaringBitmap = unsafeSer.deserialize(unsafeSer.serialize(bitmap)) assert(bitmap3.equals(bitmap)) // this will fail }
Upgrade to latest version 0.7.45 to fix it
Attachments
Issue Links
- is duplicated by
-
SPARK-27530 FetchFailedException: Received a zero-size buffer for block shuffle
- Resolved
- is related to
-
SPARK-23178 Kryo Unsafe problems with count distinct from cache
- Resolved
- relates to
-
SPARK-24160 ShuffleBlockFetcherIterator should fail if it receives zero-size blocks
- Resolved
-
SPARK-27367 Faster RoaringBitmap Serialization with v0.8.0
- Resolved
-
SPARK-27530 FetchFailedException: Received a zero-size buffer for block shuffle
- Resolved
- links to