我们有一个不断增长的数据湖的日志,我们保存在谷歌存储。数据按日期进行分区(以及其他东西,如env=production/staging)。想象一下这条路
gs://bucket/data/env=*/date=*
我们通过创建数据帧开始一个应用程序或一个分析,这些数据帧可以在以后查询以进行处理。问题是,创建DFs需要很长时间,甚至在我们对其执行操作之前。换句话说,下面的命令需要很长时间,因为Spark似乎正在扫描内部的所有文件(正如我所提到的,数据量一直在增长)。
df = spark.read.load("gs://bucket/data/", schema=data_schema, format="json")
注意,我们在这里提供了模式。另外,在加载数据之后,分区工作得很好,也就是说,如果我们按天过滤,我们确实得到了预期的速度。我们不想从一开始就读取一个特定的分区,我们希望将所有内容都放在一个DF中,并且只读取稍后需要的内容。