>From this thread
https://lists.apache.org/thread/0k5oj3mn0049fcxoxm3gx3d7r28gw4rj,  seems
Spark community is leaning toward moving to Parquet.

Gang, can you help start a discussion in the parquet community on adopting
and maintaining such Variant spec?

On Thu, Aug 22, 2024 at 8:08 AM Curt Hagenlocher <c...@hagenlocher.org>
wrote:

> This seems to straddle that line, in that you can also view this as a way
> to represent semi-structured data in a manner that allows for more
> efficient querying and computation by breaking out some of its components
> into a more structured form.
>
> (I also happen to want a canonical Arrow representation for variant data,
> as this type occurs in many databases but doesn't have a great
> representation today in ADBC results. That's why I filed [Format]
> Consider adding an official variant type to Arrow · Issue #42069 ·
> apache/arrow (github.com) <https://github.com/apache/arrow/issues/42069>.
> Of course, there's no specific reason why a canonical Arrow
> representation for variants must align with Spark and/or Iceberg.)
>
> -Curt
>
> On Thu, Aug 22, 2024 at 2:01 AM Antoine Pitrou <anto...@python.org> wrote:
>
>>
>> Ah, thanks. I've tried to find a rationale and ended up on
>> https://lists.apache.org/thread/xnyo1k66dxh0ffpg7j9f04xgos0kwc34 . Is it
>> a good description of what you're after?
>>
>> If so, then I don't think Arrow is a good match. This seems mostly to be
>> a marshalling format for semi-structured data (like Avro?). Arrow data
>> types are meant to be in a representation ideal for querying and
>> computation, rather than transport and storage.
>>
>> This could be developed separately and then be represented in Arrow
>> using an extension type (perhaps a canonical one as in
>> https://arrow.apache.org/docs/dev/format/CanonicalExtensions.html).
>>
>> What do other Arrow developers think?
>>
>> Regards
>>
>> Antoine.
>>
>>
>> Le 22/08/2024 à 10:45, Gang Wu a écrit :
>> > Sorry for the inconvenience.
>> >
>> > This is the permalink for the discussion:
>> > https://lists.apache.org/thread/hopkr2f0ftoywwt9zo3jxb7n0ob5s5bw
>> >
>> > On Thu, Aug 22, 2024 at 3:51 PM Antoine Pitrou <anto...@python.org>
>> wrote:
>> >
>> >>
>> >> Hi Gang,
>> >>
>> >> Sorry, but can you give a pointer to the start of this discussion
>> thread
>> >> in a readable format (for example a mailing-list archive)? It appears
>> >> that dev@arrow wasn't cc'ed from the start and that can make it
>> >> difficult to understand what this is about.
>> >>
>> >> Regards
>> >>
>> >> Antoine.
>> >>
>> >>
>> >> Le 22/08/2024 à 08:32, Gang Wu a écrit :
>> >>> It seems that we have reached a consensus to some extent that there
>> >>> should be a new home for the variant spec. The pending question
>> >>> is whether Parquet or Arrow is a better choice. As a committer from
>> >> Arrow,
>> >>> Parquet and ORC communities, I am neutral to choose any and happy to
>> >>> help with the movement once a decision has been made.
>> >>>
>> >>> Should we start a vote to move forward?
>> >>>
>> >>> Best,
>> >>> Gang
>> >>>
>> >>> On Sat, Aug 17, 2024 at 8:34 AM Micah Kornfield <
>> emkornfi...@gmail.com>
>> >>> wrote:
>> >>>
>> >>>>>
>> >>>>> That being said, I think the most important consideration for now is
>> >>>> where
>> >>>>> are the current maintainers / contributors to the variant type. If
>> most
>> >>>> of
>> >>>>> them are already PMC members / committers on a project, it becomes a
>> >> bit
>> >>>>> easier. Otherwise if there isn't much overlap with a project's
>> existing
>> >>>>> governance, I worry there could be a bit of friction. How many
>> active
>> >>>>> contributors are there from Iceberg? And how about from Arrow?
>> >>>>
>> >>>>
>> >>>> I think this is the key question. What are the requirements around
>> >>>> governance?  I've seen some tangential messaging here but I'm not
>> clear
>> >> on
>> >>>> what everyone expects.
>> >>>>
>> >>>> I think for a lot of the other concerns my view is that the exact
>> >> project
>> >>>> does not really matter (and choosing a project with mature cross
>> >> language
>> >>>> testing infrastructure or committing to building it is critical).
>> IIUC
>> >> we
>> >>>> are talking about following artifacts:
>> >>>>
>> >>>> 1.  A stand alone specification document (this can be hosted
>> anyplace)
>> >>>> 2.  A set of language bindings with minimal dependencies can be
>> consumed
>> >>>> downstream (again, as long as dependencies are managed carefully any
>> >>>> project can host these)
>> >>>> 3.  Potential integration where appropriate into file format
>> libraries
>> >> to
>> >>>> support shredding (but as of now this is being bypassed by using
>> >>>> conventions anyways).  My impression is that at least for Parquet
>> there
>> >> has
>> >>>> been a proliferation of vectorized readers across different
>> projects, so
>> >>>> I'm not clear how much standardization in parquet-java could help
>> here.
>> >>>>
>> >>>> To respond to some other questions:
>> >>>>
>> >>>> Arrow is not used as Spark's in-memory model, nor Trino and others so
>> >> those
>> >>>>> existing relationships aren't there. I also worry that differences
>> in
>> >>>>> approaches would make it difficult later on.
>> >>>>
>> >>>>
>> >>>> While Arrow is not in the core memory model, for Spark I believe it
>> is
>> >>>> still used for IPC for things like Java<->Python. Trino also consumes
>> >> Arrow
>> >>>> libraries today to support things like Snowflake/Bigquery federation.
>> >> But I
>> >>>> think this is minor because as mentioned above I think the functional
>> >>>> libraries would be relatively stand-alone.
>> >>>>
>> >>>> Do we think it could be introduced as a canonical extension arrow
>> type?
>> >>>>
>> >>>>
>> >>>>    I believe it can be, I think there are probably different layouts
>> >> that can
>> >>>> be supported:
>> >>>>
>> >>>> 1.  A struct with two variable width bytes columns (metadata and
>> value
>> >> data
>> >>>> are stored separately and each entry has a 1:1 relationship).
>> >>>> 2.  Shredded (shredded according to the same convention as parquet),
>> I
>> >>>> would need to double check but I don't think Arrow would have
>> problems
>> >> here
>> >>>> but REE would likely be required to make this efficient (i.e. sparse
>> >> value
>> >>>> support is important).
>> >>>>
>> >>>> In both cases the main complexity is providing the necessary
>> functions
>> >> for
>> >>>> manipulation.
>> >>>>
>> >>>> Thanks,
>> >>>> Micah
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> On Fri, Aug 16, 2024 at 3:58 PM Will Jones <will.jones...@gmail.com>
>> >>>> wrote:
>> >>>>
>> >>>>> In being more engine and format agnostic, I agree the Arrow project
>> >> might
>> >>>>> be a good host for such a specification. It seems like we want to
>> move
>> >>>> away
>> >>>>> from hosting in Spark to make it engine agnostic. But moving into
>> >> Iceberg
>> >>>>> might make it less format agnostic, as I understand multiple formats
>> >>>> might
>> >>>>> want to implement this. I'm not intimately familiar with the state
>> of
>> >>>> this,
>> >>>>> but I believe Delta Lake would like to be aligned with the same
>> format
>> >> as
>> >>>>> Iceberg. In addition, the Lance format (which I work on), will
>> >> eventually
>> >>>>> be interesting as well. It seems equally bad to me to attach this
>> >>>>> specification to a particular table format as it does a particular
>> >> query
>> >>>>> engine.
>> >>>>>
>> >>>>> That being said, I think the most important consideration for now is
>> >>>> where
>> >>>>> are the current maintainers / contributors to the variant type. If
>> most
>> >>>> of
>> >>>>> them are already PMC members / committers on a project, it becomes a
>> >> bit
>> >>>>> easier. Otherwise if there isn't much overlap with a project's
>> existing
>> >>>>> governance, I worry there could be a bit of friction. How many
>> active
>> >>>>> contributors are there from Iceberg? And how about from Arrow?
>> >>>>>
>> >>>>> BTW, I'd add I'm interested in helping develop an Arrow extension
>> type
>> >>>> for
>> >>>>> the binary variant type. I've been experimenting with a DataFusion
>> >>>>> extension that operates on this [1], and already have some ideas on
>> how
>> >>>>> such an extension type might be defined. I'm not yet caught up on
>> the
>> >>>>> shredded specification, but I think having just the binary format
>> would
>> >>>> be
>> >>>>> beneficial for in-memory analytics, which are most relevant to
>> Arrow.
>> >>>> I'll
>> >>>>> be creating a seperate thread on the Arrow ML about this soon.
>> >>>>>
>> >>>>> Best,
>> >>>>>
>> >>>>> Will Jones
>> >>>>>
>> >>>>> [1]
>> >>>>>
>> >>>>
>> >>
>> https://github.com/datafusion-contrib/datafusion-functions-variant/issues
>> >>>>>
>> >>>>>
>> >>>>> On Thu, Aug 15, 2024 at 7:39 PM Gang Wu <ust...@gmail.com> wrote:
>> >>>>>
>> >>>>>> + dev@arrow
>> >>>>>>
>> >>>>>> Thanks for all the valuable suggestions! I am inclined to Micah's
>> idea
>> >>>>> that
>> >>>>>> Arrow might be a better host compared to Parquet.
>> >>>>>>
>> >>>>>> To give more context, I am taking the initiative to add the
>> geometry
>> >>>> type
>> >>>>>> to both Parquet and ORC. I'd like to do the same thing for variant
>> >> type
>> >>>>> in
>> >>>>>> that variant type is engine and file format agnostic. This does
>> mean
>> >>>> that
>> >>>>>> Parquet might not be the neutral place to hold the variant spec.
>> >>>>>>
>> >>>>>> Best,
>> >>>>>> Gang
>> >>>>>>
>> >>>>>> On Fri, Aug 16, 2024 at 10:00 AM Jingsong Li <
>> jingsongl...@gmail.com>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>>> Thanks all for your discussion.
>> >>>>>>>
>> >>>>>>> The Apache Paimon community is also considering support for this
>> >>>>>>> Variant type, without a doubt, we hope to maintain consistency
>> with
>> >>>>>>> Iceberg.
>> >>>>>>>
>> >>>>>>> Not only the Paimon community, but also various computing engines
>> >>>> need
>> >>>>>>> to adapt to this type, such as Flink and StarRocks. We also hope
>> to
>> >>>>>>> promote them to adapt to this type.
>> >>>>>>>
>> >>>>>>> It is worth noting that we also need to standardize many functions
>> >>>>>>> related to it.
>> >>>>>>>
>> >>>>>>> A neutral place to maintain it is a great choice.
>> >>>>>>>
>> >>>>>>> - As Gang Wu said, a standalone project is good, just like
>> >>>>> RoaringBitmap
>> >>>>>>> [1].
>> >>>>>>> - As Ryan said, Parquet community is a neutral option too.
>> >>>>>>> - As Micah said, Arrow is also an option too.
>> >>>>>>>
>> >>>>>>> [1] https://github.com/RoaringBitmap
>> >>>>>>>
>> >>>>>>> Best,
>> >>>>>>> Jingsong
>> >>>>>>>
>> >>>>>>> On Fri, Aug 16, 2024 at 7:18 AM Micah Kornfield <
>> >>>> emkornfi...@gmail.com
>> >>>>>>
>> >>>>>>> wrote:
>> >>>>>>>>>
>> >>>>>>>>> Thats fair @Micah, so far all the discussions have been direct
>> and
>> >>>>> off
>> >>>>>>> the dev list. Would you like to make the request on the public
>> Spark
>> >>>>> Dev
>> >>>>>>> list? I would be glad to co-sign, I can also draft up a quick
>> email
>> >>>> if
>> >>>>>> you
>> >>>>>>> don't have time.
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> I think once we come to consensus, if you have bandwidth, I think
>> >>>> the
>> >>>>>>> message might be better coming from you, as you have more context
>> on
>> >>>>> some
>> >>>>>>> of the non-public conversations, the requirements from an Iceberg
>> >>>>>>> perspective on governance and the blockers that were
>> encountered.  If
>> >>>>>>> details on the conversations can't be shared, (i.e. we are
>> starting
>> >>>>> from
>> >>>>>>> scratch) it seems like suggesting a new project via SPIP might be
>> the
>> >>>>> way
>> >>>>>>> forward.  I'm happy to help with that if it is useful but I would
>> >>>> guess
>> >>>>>>> Aihua or Tyler might be in a better place to start as it seems
>> they
>> >>>>> have
>> >>>>>>> done more serious thinking here.
>> >>>>>>>>
>> >>>>>>>> If we decide to try to standardize on Parquet or Arrow I'm happy
>> to
>> >>>>>> help
>> >>>>>>> support the effort in those communities.
>> >>>>>>>>
>> >>>>>>>> Thanks,
>> >>>>>>>> Micah
>> >>>>>>>>
>> >>>>>>>> On Thu, Aug 15, 2024 at 8:09 AM Russell Spitzer <
>> >>>>>>> russell.spit...@gmail.com> wrote:
>> >>>>>>>>>
>> >>>>>>>>> Thats fair @Micah, so far all the discussions have been direct
>> and
>> >>>>> off
>> >>>>>>> the dev list. Would you like to make the request on the public
>> Spark
>> >>>>> Dev
>> >>>>>>> list? I would be glad to co-sign, I can also draft up a quick
>> email
>> >>>> if
>> >>>>>> you
>> >>>>>>> don't have time.
>> >>>>>>>>>
>> >>>>>>>>> On Thu, Aug 15, 2024 at 10:04 AM Micah Kornfield <
>> >>>>>> emkornfi...@gmail.com>
>> >>>>>>> wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>> I agree that it would be beneficial to make a sub-project, the
>> >>>>> main
>> >>>>>>> problem is political and not logistic. I've been asking for
>> movement
>> >>>>> from
>> >>>>>>> other relative projects for a month and we simply haven't gotten
>> >>>>>> anywhere.
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> I just wanted to double check that these issues were brought
>> >>>>> directly
>> >>>>>>> to the spark community (i.e. a discussion thread on the Spark
>> >>>> developer
>> >>>>>>> mailing list) and not via backchannels.
>> >>>>>>>>>>
>> >>>>>>>>>> I'm not sure the outcome would be different and I don't think
>> >>>> this
>> >>>>>>> should block forking the spec, but we should make sure that the
>> >>>>> decision
>> >>>>>> is
>> >>>>>>> publicly documented within both communities.
>> >>>>>>>>>>
>> >>>>>>>>>> Thanks,
>> >>>>>>>>>> Micah
>> >>>>>>>>>>
>> >>>>>>>>>> On Thu, Aug 15, 2024 at 7:47 AM Russell Spitzer <
>> >>>>>>> russell.spit...@gmail.com> wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>> @Gang Wu
>> >>>>>>>>>>>
>> >>>>>>>>>>> I agree that it would be beneficial to make a sub-project, the
>> >>>>> main
>> >>>>>>> problem is political and not logistic. I've been asking for
>> movement
>> >>>>> from
>> >>>>>>> other relative projects for a month and we simply haven't gotten
>> >>>>>> anywhere.
>> >>>>>>> I don't think there is anything that would stop us from moving to
>> a
>> >>>>> joint
>> >>>>>>> project in the future and if you know of some way of encouraging
>> that
>> >>>>>>> movement from other relevant parties I would be glad to
>> collaborate
>> >>>> in
>> >>>>>>> doing that. One thing that I don't want to do is have the Iceberg
>> >>>>> project
>> >>>>>>> stay in a holding pattern without any clear roadmap as to how to
>> >>>>> proceed.
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Wed, Aug 14, 2024 at 11:12 PM Yufei Gu <
>> flyrain...@gmail.com
>> >>>>>
>> >>>>>>> wrote:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> I’m on board with copying the spec into our repository.
>> >>>> However,
>> >>>>> as
>> >>>>>>> we’ve talked about, it’s not just a straightforward copy—there are
>> >>>>>> already
>> >>>>>>> some divergences. Some of them are under discussion. Iceberg is
>> >>>>>> definitely
>> >>>>>>> the best place for these specs. Engines like Trino and Flink can
>> then
>> >>>>>> rely
>> >>>>>>> on the Iceberg specs as a solid foundation.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Yufei
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> On Wed, Aug 14, 2024 at 7:51 PM Gang Wu <ust...@gmail.com>
>> >>>>> wrote:
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Sorry for chiming in late.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>   From the discussion in
>> >>>>>>> https://lists.apache.org/thread/xcyytoypgplfr74klg1z2rgjo6k5b0sq,
>> I
>> >>>>>> don't
>> >>>>>>> quite understand why it is logistically complicated to create a
>> >>>>>> sub-project
>> >>>>>>> to hold the variant spec and impl.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> IMHO, coping the variant type spec into Apache Iceberg has
>> >>>> some
>> >>>>>>> deficiencies:
>> >>>>>>>>>>>>> - It is a burden to update two repos if there is a variant
>> >>>> type
>> >>>>>>> spec change and will likely result in deviation if some changes do
>> >>>> not
>> >>>>>>> reach agreement from both parties.
>> >>>>>>>>>>>>> - Implementers are required to keep an eye on both specs
>> >>>>>>> (considering proprietary engines where both Iceberg and Delta are
>> >>>>>>> supported).
>> >>>>>>>>>>>>> - Putting the spec and impl of variant type in Iceberg repo
>> >>>> does
>> >>>>>>> lose the opportunity for better native support from file formats
>> like
>> >>>>>>> Parquet and ORC.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> I'm not sure if it is possible to create a separate project
>> >>>>> (e.g.
>> >>>>>>> apache/variant-type) to make it a single point of truth. We can
>> learn
>> >>>>>> from
>> >>>>>>> the experience of Apache Arrow. In this fashion, different
>> engines,
>> >>>>> table
>> >>>>>>> formats and file formats can follow the same spec and are free to
>> >>>>> depend
>> >>>>>> on
>> >>>>>>> the reference implementations from apache/variant-type or
>> implement
>> >>>>> their
>> >>>>>>> own.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Best,
>> >>>>>>>>>>>>> Gang
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> On Thu, Aug 15, 2024 at 10:07 AM Jack Ye <
>> yezhao...@gmail.com
>> >>>>>
>> >>>>>>> wrote:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> +1 for copying the spec into our repository, I think we
>> need
>> >>>> to
>> >>>>>>> own it fully as a part of the table spec, and we can build
>> >>>>> compatibility
>> >>>>>>> through tests.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> -Jack
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> On Wed, Aug 14, 2024 at 12:52 PM Russell Spitzer <
>> >>>>>>> russell.spit...@gmail.com> wrote:
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> I'm not really in favor of linking and annotating as that
>> >>>> just
>> >>>>>>> makes things more complicated and still is essentially forking
>> just
>> >>>>> with
>> >>>>>>> more steps. If we just track our annotations / modifications  to a
>> >>>>> single
>> >>>>>>> commit/version then we have the same issue again but now you have
>> to
>> >>>> go
>> >>>>>> to
>> >>>>>>> multiple sources to get the actual Spec. In addition, our very
>> copy
>> >>>> of
>> >>>>>> the
>> >>>>>>> Spec is going to require new types which don't exist in the Spark
>> >>>> Spec
>> >>>>>>> which necessarily means diverging. We will need to take up new
>> >>>>> primitive
>> >>>>>>> id's (as noted in my first email)
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> The other issue I have is I don't think the Spark Spec is
>> >>>>> really
>> >>>>>>> going through a thorough review process from all members of the
>> Spark
>> >>>>>>> community, I believe it probably should have gone through the SPIP
>> >>>> but
>> >>>>>>> instead seems to have been merged without broad community
>> >>>> involvement.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> The only way to truly avoid diverging is to only have a
>> >>>> single
>> >>>>>>> copy of the spec, in our previous discussions the vast majority of
>> >>>>> Apache
>> >>>>>>> Iceberg community want it to exist here.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> On Wed, Aug 14, 2024 at 2:19 PM Daniel Weeks <
>> >>>>> dwe...@apache.org
>> >>>>>>>
>> >>>>>>> wrote:
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I'm really excited about the introduction of variant type
>> >>>> to
>> >>>>>>> Iceberg, but I want to raise concerns about forking the spec.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I feel like preemptively forking would create the
>> situation
>> >>>>>>> where we end up diverging because there's little reason to work
>> with
>> >>>>> both
>> >>>>>>> communities to evolve in a way that benefits everyone.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I would much rather point to a specific version of the
>> spec
>> >>>>> and
>> >>>>>>> annotate any variance in Iceberg's handling.  This would allow us
>> to
>> >>>>>>> continue without dividing the communities.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> If at any point there are irreconcilable differences, I
>> >>>> would
>> >>>>>>> support forking, but I don't feel like that should be the initial
>> >>>> step.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> No one is excited about the possibility that the physical
>> >>>>>>> representations end up diverging, but it feels like we're setting
>> >>>>>> ourselves
>> >>>>>>> up for that exact scenario.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> -Dan
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> On Wed, Aug 14, 2024 at 6:54 AM Fokko Driesprong <
>> >>>>>>> fo...@apache.org> wrote:
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> +1 to what's already being said here. It is good to copy
>> >>>> the
>> >>>>>>> spec to Iceberg and add context that's specific to Iceberg, but at
>> >>>> the
>> >>>>>> same
>> >>>>>>> time, we should maintain compatibility.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Kind regards,
>> >>>>>>>>>>>>>>>>> Fokko
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Op wo 14 aug 2024 om 15:30 schreef Manu Zhang <
>> >>>>>>> owenzhang1...@gmail.com>:
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> +1 to copy the spec into our repository. I think the
>> best
>> >>>>> way
>> >>>>>>> to keep compatibility is building integration tests.
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>>>>>> Manu
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> On Wed, Aug 14, 2024 at 8:27 PM Péter Váry <
>> >>>>>>> peter.vary.apa...@gmail.com> wrote:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Thanks Russell and Aihua for pushing Variant support!
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Given the differences between the supported types and
>> >>>> the
>> >>>>>>> lack of interest from the other project, I think it is reasonable
>> to
>> >>>>>>> duplicate the specification to our repository.
>> >>>>>>>>>>>>>>>>>>> I would give very strong emphasis on sticking to the
>> >>>> Spark
>> >>>>>>> spec as much as possible, to keep compatibility as much as
>> possible.
>> >>>>>> Maybe
>> >>>>>>> even revert to a shared specification if the situation changes.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>>>>>>> Peter
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Aihua Xu <aihu...@gmail.com> ezt írta (időpont: 2024.
>> >>>>> aug.
>> >>>>>>> 13., K, 19:52):
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Thanks Russell for bringing this up.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> This is the main blocker to move forward with the
>> >>>> Variant
>> >>>>>>> support in Iceberg and hopefully we can have a consensus. To me, I
>> >>>> also
>> >>>>>>> feel it makes more sense to move the spec into Iceberg rather than
>> >>>>> Spark
>> >>>>>>> engine owns it and we try to keep it compatible with Spark spec.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>>>>>>>> Aihua
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> On Mon, Aug 12, 2024 at 6:50 PM Russell Spitzer <
>> >>>>>>> russell.spit...@gmail.com> wrote:
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Hi Y’all,
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> We’ve hit a bit of a roadblock with the Variant
>> >>>>> Proposal,
>> >>>>>>> while we were hoping to move the Variant and Shredding
>> specifications
>> >>>>>> from
>> >>>>>>> Spark into Iceberg there doesn’t seem to be a lot of interest in
>> >>>> that.
>> >>>>>>> Unfortunately, I think we have a number of issues with just
>> linking
>> >>>> to
>> >>>>>> the
>> >>>>>>> Spark project directly from within Iceberg and I believe we need
>> to
>> >>>>> copy
>> >>>>>>> the specifications into our repository.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> There are a few reasons why i think this is
>> necessary
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> First, we have a divergence of types already. The
>> >>>> Spark
>> >>>>>>> Specification already includes types which Iceberg has no
>> definition
>> >>>>> for
>> >>>>>>> (19, 20 - Interval Types) and Iceberg already has a type which is
>> not
>> >>>>>>> included within the Spark Specification (Time) and will soon have
>> >>>> more
>> >>>>>> with
>> >>>>>>> TimestampNS, and Geo.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Second, We would like to make sure that Spark is
>> not a
>> >>>>>> hard
>> >>>>>>> dependency for other engines. We are working with several
>> >>>> implementers
>> >>>>> of
>> >>>>>>> the Iceberg spec and it has previously been agreed that it would
>> be
>> >>>>> best
>> >>>>>> if
>> >>>>>>> the source of truth for Variant existed in an engine and file
>> format
>> >>>>>>> neutral location. The Iceberg project has a good open model of
>> >>>>> governance
>> >>>>>>> and, as we have seen so far discussing Variant, open and active
>> >>>>>>> collaboration. This would also help as we can strictly version our
>> >>>>>> changes
>> >>>>>>> in-line with the rest of the Iceberg spec.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Third, The Shredding spec is not quite finished and
>> >>>>>>> requires some group analysis and discussion before we commit it. I
>> >>>>> think
>> >>>>>>> again the Iceberg community is probably the right place for this
>> to
>> >>>>>> happen
>> >>>>>>> as we have already started discussions here on these topics.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> For these reasons I think we should go with a direct
>> >>>>> copy
>> >>>>>>> of the existing specification from the Spark Project and move
>> ahead
>> >>>>> with
>> >>>>>>> our discussions and modifications within Iceberg. That said, I do
>> not
>> >>>>>> want
>> >>>>>>> to diverge if possible from the Spark proposal. For example,
>> although
>> >>>>> we
>> >>>>>> do
>> >>>>>>> not use the Interval types above, I think we should not reuse
>> those
>> >>>>> type
>> >>>>>>> ids within our spec. Iceberg's Variant Spec types 19 and 20 would
>> >>>>> remain
>> >>>>>>> unused along with any other types we think are not applicable. We
>> >>>>> should
>> >>>>>>> strive whenever possible to allow for compatibility.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> In the interest of moving forward with this
>> proposal I
>> >>>>> am
>> >>>>>>> hoping to see if anyone in the community objects to this plan
>> going
>> >>>>>> forward
>> >>>>>>> or has a better alternative.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> As always I am thankful for your time and am eager
>> to
>> >>>>> hear
>> >>>>>>> back from everyone,
>> >>>>>>>>>>>>>>>>>>>>> Russ
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>
>> >
>>
>

Reply via email to