-
Notifications
You must be signed in to change notification settings - Fork 4.8k
HIVE-21737: Upgrade Avro to version 1.10.1 #1635
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
R: @sunchao |
Just for curiosity, patches in the ticket are not needed anymore? |
@sunchao It seems the jenkins tests failed but I cannot get into jenkins to see what's going on, any hints? |
4324f70
to
48f3906
Compare
@sunchao great to see some of the changes merged. I cannot open the link. I got a 404 error now (before it was a sockets error who aborted the access eagerly). I am not sure if I understand. I upgraded Avro to the latest stable release (1.10.0) but I expect this will trigger the failures previously discussed in the ticket (on ill defined schemas on avro_deserialize_map_null.q, parquet_map_null.q) and fixed by AVRO-2817 but that require of the 1.10.1 release. Great to see #1621 merged, is there already a PR to cherry-pick that one into |
It's weird, and I'm not sure how access is managed there. FWIW, here's the error message:
so you may need to double check dependencies and perhaps add the missing snappy one.
Seems this only triggers when you have "default:null" in schema? I don't see we're doing that in Hive though.
Not yet, yeah feel free to do that. Have you got a chance to test this against Spark with a upgraded Parquet version? |
Can you please share with me the full logs of the CI run, just to see what modules might require the dependency? Snappy is a optional runtime dependency now, so it is up to the project (Hive) to know where it uses it.
Yes exactly, but this can happen in the context of an union too, both parquet_map_null.q and avro_deserialize_map_null.q refer to map_null_val.avro so this seem to be the case.
I have a branch with everything on it Avro, Hive and Parquet updates in case you want to take a look, it fully compiles however I have not been able to run the full set of Spark tests locally yet because of unrelated errors on Kinesis (and lack of familiarity with the Spark test suite). I would like to test it with the full CI, but to do that I would need to have the Hive SNAPSHOTs somewhere, it is a pity Hive does not publish them for older versions, or are they published somewhere (that way i will update things there first)? |
Sure, the stack trace is:
seems all the failures are from
Ah I see. Great. I guess we haven't seen test failure related to this yet?
Awesome! do you see any compile error without the Avro API fix? I don't think the snapshot jars are published anywhere so it could be hard to test this in Spark CI... However, we also plan to test this combination out in our internal Spark CI. |
48f3906
to
15eda39
Compare
15eda39
to
8421301
Compare
8421301
to
682eb40
Compare
Do you have an estimate of where a possible vote to get the previous changes (and hopefully this one) released as 2.3.8? |
682eb40
to
d3fcb7b
Compare
@iemejia please let me know if you think this is absolutely needed. I plan to start another vote on Hive 2.3.8 RC3 in the AM of 22th (PST). |
I'm not speaking for @iemejia of course, but my impression was that this patch was necessary for Hive 2.3.8 in order to (among other things) unblock spark from using a newer parquet (and thus avro) version. See linked issues in HIVE-21737, SPARK-27733, etc. |
Yes, but my impression is that HIVE-24324 and HIVE-24436 should be sufficient to solve the issue. But let me know if otherwise. |
I'm just guessing myself, but based on the changes in apache/spark#30517, I think a bumped Avro dependency in Hive 2.3.8 is what people were planning with. |
Yes I'm aware of that PR. The Avro upgrade is in Spark though, and the testing is done with previous Hive release candidates which do not include the Avro upgrade. |
@sunchao Great to know the cut is happening soon! If this is absolutely needed is a question of tradeoffs. Avro binary format has not changed since version 1.8.x when it introduced Logical Types, but more recent versions have removed dependencies from the public API (Jackson, Guava, JodaTime, etc) so I suppose catching up to the latest version can have the same risks as catching up to 1.8.x (which Hive already did) for the binary part. I suppose Hive users rarely use Avro directly from the transitive dependency and mostly rely on the Hive APIs (which I hope don't leak Avro) so this might diminish the risk, but of course there is a risk in that particular case. I am probably biased towards the upgrade because I come from the Avro side and I expect the full Big Data ecosystem to be updated and avoid issues because Hive contributors may introduce changes that are API incompatible with more recent versions of Avro and break downstream projects because of this (like the current parallel work on Spark). As usual in software it is all about tradeoffs. This decision is up to you guys as the maintainers and I might miss some other side effects in my analysis because I don't know Hive deeply. In any case if you guys decide to jump to the latest Avro version e.g. 1.10.1 and any issue happens I engage myself from the Avro side to do any fix and get out a release if required. |
@iemejia thanks, can you open a PR against branch-2.3? let's see how the tests go first. |
BTW @iemejia I'm seeing this test consistently failing in all the test runs: Can you take a look? |
You can try to reproduce this via:
although I got a different error:
It seems it's caused by this:
which seems did not happen in the Jenkins CI. |
The test failure may by related to: hive/itests/qtest-druid/pom.xml Line 46 in f7ec294
https://github.com/apache/hadoop/blob/release-3.1.0-RC1/hadoop-project/pom.xml#L92 |
b539bcf
to
ecc40bd
Compare
I included @wangyum fix into this patch let's see if it works now 🤞 |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
Co-Authored-By: Ismaël Mejía iemejia@gmail.com
What changes were proposed in this pull request?
Why are the changes needed?
Does this PR introduce any user-facing change?
How was this patch tested?