apache-spark - 在数据 block 中加载增量表特定分区的最佳做法是什么?

标签 apache-spark pyspark partitioning azure-databricks delta-lake

我想知道加载增量表特定分区的最佳方法是什么? 选项 2 是否在过滤之前加载所有表?

选项 1:

df = spark.read.format("delta").option('basePath','/mnt/raw/mytable/')\
   .load('/mnt/raw/mytable/ingestdate=20210703')

(这里需要basePath选项吗?)

选项 2:

df = spark.read.format("delta").load('/mnt/raw/mytable/')
df = df.filter(col('ingestdate')=='20210703')

提前致谢!

最佳答案

在第二个选项中,spark 仅加载过滤条件中提到的相关分区,spark 内部进行分区修剪,并仅从源表中加载相关数据。

而在第一个选项中,您直接指示 spark 仅加载定义的各个分区。

因此在这两种情况下,您最终只会加载相应的分区数据。

关于apache-spark - 在数据 block 中加载增量表特定分区的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68344289/

相关文章:

apache-spark - 如何将具有重复列名的数据框写入 pyspark 中的 csv 文件

python - 如何在 Python 中合并 Spark SQL 数据帧

java - Databricks Spark-csv 检查空文件

pandas - 将 Pandas 或 Pyspark 数据框从 Databricks 保存到 SharePoint

azure-cosmosdb - 区分 Azure Cosmos DB 中的分区键和分区键范围

hadoop - 如何在配置单元表中选择用于分区和分桶的列?

mysql - 如何跨多个服务器对 Mysql 进行分区?

hadoop - 在不同的机器配置中使用hadoop集群

apache-spark - 在 Spark 中读取多个文件并在追加之前对其进行处理

scala - Spark Scala : Task Not serializable error