News for hackers. Stuff that matters.
Re:Big data is dead (2023) by thesz on Monday May 27, 2024 @09:59AM (#40490764)
Parquet is underdesigned. Some parts of it do not scale well.

I believe that Parquet files have rather monolithic metadata at the end and it has 4G max size limit. 600 columns (it is realistic, believe me), and we are at slightly less than 7.2 millions row groups. Give each row group 8K rows and we are limited to 60 billion rows total. It is not much.

The flatness of the file metadata require external data structures to handle it more or less well. You cannot just mmap it and be good. This external data structure most probably will take as much memory as file metadata, or even more. So, 4G+ of your RAM will be, well, used slightly inefficiently.

(block-run-mapped log structured merge tree in one file can be as compact as parquet file and allow for very efficient memory mapped operations without additional data structures)

Thus, while parqet is a step, I am not sure it is a step in definitely right direction. Some aspects of it are good, some are not that good.

Re:Big data is dead (2023) by Renaud on Monday May 27, 2024 @10:34AM (#40491102)
Parquet is not a database, it's a storage format that allows efficient column reads so you can get just the data you need without having to parse and read the whole file.

Most tools can run queries across parquet files.

Like everything, it has its strengths and weaknesses, but in most cases, it has better trade-offs over CSV if you have more than a few thousand rows.

Re:Big data is dead (2023) by beryilma on Monday May 27, 2024 @04:14PM (#40494220)
[delayed]
Re:Big data is dead (2023) by imiric on Monday May 27, 2024 @10:33AM (#40491101)
What format would you recommend instead?
Re:Big data is dead (2023) by thesz on Monday May 27, 2024 @05:24PM (#40494880)
I do not know a good one.

A former colleague of mine is now working on a memory-mapped log-structured merge tree implementation and it can be a good alternative. LSM provides elasticity, one can store as much data as one needs, it is static, thus it can be compressed as well as Parquet-stored data, memory mapping and implicit indexing of data do not require additional data structures.

Something like LevelDB and/or RocksDB can provide most of that, especially when used in covering index [1] mode.

[1] https://www.sqlite.org/queryplanner.html#_covering_indexes

Re:Big data is dead (2023) by datadeft on Monday May 27, 2024 @10:12AM (#40490891)
Nobody is forcing you to use a single Parquet file.
Re:Big data is dead (2023) by thesz on Monday May 27, 2024 @05:31PM (#40494939)
Of course.

But nobody tells me that I can hit a hard limit and then I need a second Parquet file and should have some code for that.

The situation looks to me as if my "Favorite DB server" supports, say, only 1.9 billions records per table and if I hit that limit I need a second instance of my "Favorite DB server" just for that unfortunate table. And it is not documented anywhere.

Re:Big data is dead (2023) by apwell23 on Monday May 27, 2024 @10:16AM (#40490923)
some critiques of parquet by andy pavlo

https://www.vldb.org/pvldb/vol17/p148-zeng.pdf

Re:Big data is dead (2023) by thesz on Monday May 27, 2024 @05:44PM (#40495035)
Thanks, very insightful.

"Dictionary Encoding is effective across data types (even for floating-point values) because most real-world data have low NDV ratios. Future formats should continue to apply the technique aggressively, as in Parquet."

So this is not critique, but assessment. And Parquet has some interesting design decisions I did not know about.

So, let me thank you again. ;)

Re:Big data is dead (2023) by maxnevermind on Monday May 27, 2024 @01:42PM (#40492925)
> 7.2 millions row groups

Why would you need 7.2 mil row groups?

Row group size when stored in HDFS is usually equal to HDFS bock size by default, which is 128MB

7.2 mil * 128MB ~ 1PB

You have a single parquet file 1PB in size?

Re:Big data is dead (2023) by thesz on Monday May 27, 2024 @05:02PM (#40494669)
Parquet is not HDFS. It is a static format, not a B-tree in disguise like HDFS.

You can have compressed Parquet columns with 8192 entries being a couple of tens bytes in size. 600 columns in a row group is then 12K bytes or so, leading us to 100GB file, not a petabyte. Four orders of magnitude of difference between your assessment and mine.