我有一个Avro格式的大数据集,需要在加载时进行分区。我目前要做的是先加载文件,然后调用 repartition()将数据组织到我的要求中,如以下块所示:
val df = spark.load.format("com.databricks.spark.avro").load("/mypath")
val partitionedDF = df.repartition(count, col(id))
我想知道是否可以更改默认分区程序,以便在加载avro文件时不需要 repartition()。
谢谢!
答案 0 :(得分:0)
您列出的两行代码中均不会实际加载数据。由于spark的懒惰评估,除非您执行“操作”(例如收集,写入,执行等),否则什么都不会发生。
如果要提高数据加载的性能,可以在加载avro文件之前先将其拆分(也就是将avro文件按“ id”分区,并且每个id都有一个文件)。