I want to clarify the ordering semantics (if deterministic) on partitions
returned when using iceberg core data API to read.
Say I define a table with a *time* column and partition by *day(time)*, and
do the following writes.
partition (day) time other data fields
2020-10-01 2020-10-01 01:01:01 ...
2020-10-01 2020-10-01 02:01:01 ...
2020-10-02 2020-10-02 01:01:01 ...
2020-10-02 2020-10-02 02:01:01 ...
Then if I do read all using something like the following.
IcebergGenerics.read(table).build();
I did see rows returned in the right order in terms of partitions. Then if
I append the same data again and read again. I see rows returned like.
2020-10-01 2020-10-01 01:01:01 ...
2020-10-01 2020-10-01 02:01:01 ...
2020-10-02 2020-10-02 01:01:01 ...
2020-10-02 2020-10-02 02:01:01 ...
2020-10-01 2020-10-01 01:01:01 ...
2020-10-01 2020-10-01 02:01:01 ...
2020-10-02 2020-10-02 01:01:01 ...
2020-10-02 2020-10-02 02:01:01 ...
In other words, the rows returned in the order first by commit time then by
partition *day*. If I want to ensure the data from partition 2020-10-01 is
always returned before 2020-10-02 in the above example, is there a way to
configure the reader to do that? I checked the reader API and cannot seem
to find a method to do that.
Please be noted that I am NOT talking about sorting within a partition,
which I know that has to be enforced by the writer.
--
Chen Song