加载Avro文件之前设置分区功能

时间:2018-10-04 21:44:34

标签: apache-spark apache-spark-sql partitioning

我有一个Avro格式的大数据集,需要在加载时进行分区。我目前要做的是先加载文件,然后调用 repartition()将数据组织到我的要求中,如以下块所示:

val df = spark.load.format("com.databricks.spark.avro").load("/mypath")
val partitionedDF = df.repartition(count, col(id))

我想知道是否可以更改默认分区程序,以便在加载avro文件时不需要 repartition()

谢谢!

1 个答案:

答案 0 :(得分:0)

您列出的两行代码中均不会实际加载数据。由于spark的懒惰评估,除非您执行“操作”(例如收集,写入,执行等),否则什么都不会发生。

如果要提高数据加载的性能,可以在加载avro文件之前先将其拆分(也就是将avro文件按“ id”分区,并且每个id都有一个文件)。