Uh oh!
There was an error while loading. Please reload this page.
[SPARK-27216][CORE] Upgrade RoaringBitmap to 0.7.45 - #24157
Conversation
LantaoJin
commented
Mar 20, 2019
This UT only works after #24156 fixed. Now it's easy to reproduce by replacing |
LantaoJin
commented
Mar 20, 2019
Since current RoaringBitmap couldn't be ser/deser correctly in unsafe KryoSerializer, first thing I could think out is replacing this data structure totally or when use unsafe Kryo. How do you think about it? |
srowen
commented
Mar 20, 2019
Does this need to be serialized? I wouldn't think so if it doesn't work! |
There was a problem hiding this comment.
You are changing the conf which also used by other tests within the suite and now the execution order of these tests are important. If the test execution starts with this test and others are executed latter they might fail.
There was a problem hiding this comment.
It can be move to a totally new Suite. I will update it.
AmplabJenkins
commented
Mar 20, 2019
Can one of the admins verify this patch? |
Err, scratch that, I was looking at entirely the wrong thing. I'm also confused here -- so far, this change is just the failing UT, right? you will add the actual fix to behavior as part of this pr? |
@srowen@squito I've added another UT which is the minimized dataset from our product issue. if (buf.size ==0) {
// throwFetchFailedException(blockId, address, new IOException(msg))
}After that, the testing |
squito
commented
Mar 22, 2019
@LantaoJin I'm still confused by the status of this -- it seems its just test changes, not behavior changes, but it sounds like you are saying some behavior is just broken. Its labeled as a WIP, but you've also pinged people for review. Are you looking for help in determining the right fix? If so, it would help us if you could give a more complete description of what goes wrong. I don't see anything obviously wrong with unsafe kryo and roaring bitmap -- you could try serializing a tiny bitmap and see if the bits make sense Or do you believe this by itself is actually the complete change? |
LantaoJin
commented
Apr 1, 2019
Since packageorg.apache.spark.sqlimportorg.apache.spark.internal.configimportorg.apache.spark.internal.config.Kryo._importorg.apache.spark.internal.config.SERIALIZERimportorg.apache.spark.sql.internal.SQLConfimportorg.apache.spark.sql.test.SharedSQLContextclassSQLQueryWithKryoSuiteextendsQueryTestwithSharedSQLContext {
overrideprotecteddefsparkConf=super.sparkConf
.set(SERIALIZER, "org.apache.spark.serializer.KryoSerializer")
.set(KRYO_USE_UNSAFE, true)
test("kryo unsafe data quality issue") {
// This issue can be reproduced when// 1. Enable KryoSerializer// 2. Set spark.kryo.unsafe to true// 3. Use HighlyCompressedMapStatus since it uses RoaringBitmap// 4. Set spark.sql.shuffle.partitions to 6000, 6000 can trigger issue based the supplied data// 5. Comment the zero-size blocks fetch fail exception in ShuffleBlockFetcherIterator// or this job will failed with FetchFailedException.
withSQLConf(
SQLConf.SHUFFLE_PARTITIONS.key ->"6000",
config.SHUFFLE_MIN_NUM_PARTS_TO_HIGHLY_COMPRESS.key ->"-1") {
withTempView("t") {
valdf= spark.read.parquet(testFile("test-data/dates.parquet")).toDF("date")
df.createOrReplaceTempView("t")
checkAnswer(
sql("SELECT COUNT(*) FROM t"),
sql(
""" |SELECT SUM(a) FROM |( |SELECT COUNT(*) a, date |FROM t |GROUP BY date |)""".stripMargin))
}
}
}
} |
srowen
commented
Apr 1, 2019
@LantaoJin you should be able to reopen this, or it will reopen if you push a new commit. |
LantaoJin
commented
Apr 1, 2019
Sorry I can not reopen it since a force pushing. I open a new #24264 as a updating. |
srowen
commented
Apr 1, 2019
That's fine, I can reopen them too, but you already have a new PR |
What changes were proposed in this pull request?
HighlyCompressedMapStatus uses RoaringBitmap to record the empty blocks. But RoaringBitmap couldn't be ser/deser with unsafe KryoSerializer.
How was this patch tested?
Adding UT