Spark Parquet 性能与 MapType 列

Spark Parquet Perfomance with MapType Columns

我有一个包含 400 多列的数据框。大多数列都是倾斜的,即数据框中一行中大多数列的值大多为空,除了少数列(大约 20)

我打算将此结构更改为

col1:Array[String]
col2:Array[String]
...
MapColumn: MapType {
key:String
value:Array[String] 
}

我想知道在 spark 中使用带有 parquet 的 MapType 列是否有已知的性能影响?

我运行做了几个实验来测试性能。我采用了一个包含 100 列和一百万个条目的数据集。我转换了 MapType 列中的数据集

Size of Parquet format all columns: 81MB
Size of Parquet format columns converted to MapType where map values could be NULL: 496MB
Size of Parquet format columns converted to MapType where map values with NULL removed: 86MB 

在我看来,如果您可以删除空值,则没有显着差异。