在sparkDataframe分区中使用多列是否会降低读取速度?

gojuced7  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(358)

我想知道在spark中编写sparkDataframe时使用多列是否会使将来的读取速度变慢?我知道为将来的过滤使用关键列进行分区可以提高读取性能,但是如果有多个列,即使是那些不能用于过滤的列,会有什么效果呢?
示例如下:

(ordersDF
  .write
  .format("parquet")
  .mode("overwrite")
  .partitionBy("CustomerId", "OrderDate", .....) # <----------- add many columns
  .save("/storage/Orders_parquet"))
v9tzhpje

v9tzhpje1#

是的,因为spark必须做shuffle和短数据,所以可以分区。
因为分区键会有很多组合。
ie公司

suppose CustomerId have unique values  10 
 suppose orderDate have unique values   10 
 suppose Orderhave unique values        10 

 Number of partition will be 10 *10*10

在这个小场景中,我们需要创建1000个bucket。
所以地狱洗牌和短期战利品>>更多的时间。

相关问题