Thanks Gang for initiating the discussion.

On Fri, Aug 23, 2024 at 2:22 AM Gang Wu <ust...@gmail.com> wrote:

> Thanks Aihua!
>
> I've started the discussion in dev@parquet:
> https://lists.apache.org/thread/6h58hj39lhqtcyd2hlsyvqm4lzdh4b9z
>
> Best,
> Gang
>
> On Fri, Aug 23, 2024 at 12:53 PM Aihua Xu <aihua...@snowflake.com> wrote:
>
>> 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