Jie*_*eng 5 apache-spark parquet pyspark
我发现默认情况下,Spark似乎写了许多小的镶木地板文件.我认为如果我使用分区来减少这种情况可能会更好吗?
但是如何选择分区键呢?例如,对于我经常通过ID查询的用户数据集,我是否进行分区id?但我想,在这种情况下,它会为1个用户创建1个镶木地板文件吗?
如果我经常通过2个键查询但只有1个或另外两个不同时查询,那么两个键分区是否有用呢?例如,可以说我平时通过查询id和country,我用partitionBy('id', 'country')?
如果我没有查询数据但想限制文件数量的特定模式,那我可以使用repartition吗?
分区为分区字段的每个值创建一个子目录,因此如果您按该字段进行过滤,而不是读取每个文件,它将只读取appropiate子目录中的文件.
您应该在数据太大时进行分区,并且通常一次使用一部分数据.
您应该按需要经常过滤且具有低基数的字段进行分区,即:它将创建相对少量的目录,每个目录上的数据量相对较大.
例如,您不希望按唯一ID进行分区.它会创建许多目录,每个目录只有一行; 当您需要选择多个ID时,效率非常低.
如果您正在处理时间序列(例如每日数据转储),地理位置(国家,分支机构......)或分类(对象类型,制造商等),则某些典型的分区字段可能是日期.
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |