apache-spark – Spark Parquet Partitioning:如何选择密钥

我发现默认情况下,Spark似乎写了许多小的镶木地板文件.我认为如果我使用分区来减少这种情况可能会更好吗?

但是如何选择分区键呢?例如,对于我经常按ID查询的用户数据集,我是按ID进行分区吗?但我想,在这种情况下,它会为1个用户创建1个镶木地板文件吗?

如果我经常通过2个键查询但只有1个或另外两个不同时查询,那么两个键分区是否有用呢?例如,假设我通常通过id和country查询,我是否使用partitionBy(‘id’,’country’)?

如果我没有查询数据但想要限制文件数量的特定模式,那么我是否使用重新分区?

分区为分区字段的每个值创建一个子目录,因此如果您按该字段进行过滤,而不是读取每个文件,它将只读取appropiate子目录中的文件.

>您应该在数据过大时进行分区
一次处理一部分数据.
>您应该按需要过滤的字段进行分区
经常和低基数,即:它会创造一个
数量相对较少的目录量相对较少
每个目录上的数据.

例如,您不希望按唯一ID进行分区.它会创建许多目录,每个目录只有一行;当您需要选择多个ID时,效率非常低.

如果您正在处理时间序列(例如每日数据转储),地理位置(国家,分支机构……)或分类(对象类型,制造商等),则某些典型的分区字段可能是日期.

相关文章
相关标签/搜索