【发布时间】:2021-01-14 03:32:19
【问题描述】:
我的日常工作是将 avro 转换为镶木地板。
Avro文件每小时20G,按年、月、日、小时分区
当我像下面这样读取 avro 文件时,
spark.read.format("com.databricks.spark.avro").load(basePath).where($year=2020 and $month=9 and $day=1 and $hour=1).write.paritionBy(paritionCol).parquet(path) - 作业运行 1.5 小时
注意:整个文件夹basePath有36TB的avro格式数据
但是,对于相同的 spark 配置(内存和实例等),以下命令仅运行 7 分钟。
spark.read.format("com.databricks.spark.avro").option("basePath", basePath).load(basePath + "year=2020/month=9/day=1/hour=1/").write.paritionBy(paritionCol).parquet(path)。
为什么时间会如此急剧减少? avro如何在内部进行分区修剪?
【问题讨论】:
标签: apache-spark parquet spark-avro