gpt4 book ai didi

apache-spark - Pyspark 数据框 Parquet 与增量 : different number of rows

转载 作者:行者123 更新时间:2023-12-05 09:35:23 26 4
gpt4 key购买 nike

我在 HDFS 上用 Delta 写入了数据。据我了解,Delta 将数据存储为 parquet,只是在它上面多了一个具有高级功能的层。

但是当使用 Pyspark 读取数据时,如果使用 spark.read.parquet()spark.read.format('delta').load 读取数据帧,我会得到不同的结果()

df = spark.read.format('delta').load("my_data")
df.count()
> 184511389

df = spark.read.parquet("my_data")
df.count()
> 369022778

如您所见,差异非常大。

我对 delta 与 parquet 有什么误解吗?

Pyspark 版本是 2.4

最佳答案

最可能的解释是您使用 overwrite 选项两次写入 Delta。但 Delta 是版本化数据格式——当你使用 overwrite 时,它不会删除以前的数据,它只会写入新文件,并且不会立即删除文件——它们只是在 list 中被标记为已删除Delta 使用的文件。当您从 Delta 读取数据时,它知道哪些文件已删除,哪些未删除,并且只读取实际数据。数据文件的实际删除发生在您对 Delta lake 执行 VACUUM 时。

但是当您使用 Parquet 读取时,它没有有关已删除文件的信息,因此它会读取目录中的所有内容,因此您会得到两倍的行数。

关于apache-spark - Pyspark 数据框 Parquet 与增量 : different number of rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65916376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com