gpt4 book ai didi

scala - 在不计算的情况下获取 Spark 数据帧中的行数

转载 作者:行者123 更新时间:2023-12-01 11:13:39 25 4
gpt4 key购买 nike

我在 Spark DataFrame(过滤器、groupBy、join)上应用了许多转换。我想在每次转换后获得 DataFrame 中的行数。

我目前正在每次转换后使用函数 count() 计算行数,但这每次都会触发一个并未真正优化的操作。

我想知道是否有任何方法可以知道行数而不必触发原始作业以外的其他操作。

最佳答案

您可以为每个阶段使用一个累加器,并在每个阶段之后在 map 中增加累加器。然后在你做完你的 Action 之后,你就会对所有阶段进行计数。

val filterCounter = spark.sparkContext.longAccumulator("filter-counter")
val groupByCounter = spark.sparkContext.longAccumulator("group-counter")
val joinCounter = spark.sparkContext.longAccumulator("join-counter")

myDataFrame
.filter(col("x") === lit(3))
.map(x => {
filterCounter.add(1)
x
}) .groupBy(col("x"))
.agg(max("y"))
.map(x => {
groupByCounter.add(1)
x
})
.join(myOtherDataframe, col("x") === col("y"))
.map(x => {
joinCounter.add(1)
x
})
.count()

print(s"count for filter = ${filterCounter.value}")
print(s"count for group by = ${groupByCounter.value}")
print(s"count for join = ${joinCounter.value}")

关于scala - 在不计算的情况下获取 Spark 数据帧中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56187579/

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