如何使我的 Spark Accumulator 统计信息在 Azure Databricks 中可靠?

How can i make my Spark Accumulator statistics reliable in Azure Databricks?

我正在使用火花累加器来收集每个管道的统计信息。

在典型的管道中,我会读取 data_frame :

df = spark.read.format(csv).option("header",'true').load('/mnt/prepared/orders')
df.count() ==> 7 rows

然后我会把它写在两个不同的地方:

df.write.format(delta).option("header",'true').load('/mnt/prepared/orders')
df.write.format(delta).option("header",'true').load('/mnt/reporting/orders_current/')

不幸的是,每次 write 操作都会更新我的累加器统计信息。它给出了读取 14 行的数字,而我只读取了一次输入数据帧。

如何让我的累加器正确反映我实际读取的行数。

我是 spark 的新手。已经检查了围绕该问题的几个线程,但没有找到我的答案。 Statistical accumulator in Python spark Accumulator reset

第一条规则 - 累加器并非 100% 可靠。它们可以更新多次,例如,如果任务是 restarted/retried.

在你的情况下,虽然你读取了一次,但并不意味着数据不会被再次读取。读操作只是获取元数据,如schema,如果对某些数据类型使用inferSchema,可能会读取数据,但这并不意味着它实际上是将数据读入内存。您可以缓存读取的数据帧,但它只适用于较小的数据集,因为它也不能保证数据不会被驱逐,然后需要重新读取