如果列中的不同计数达到 10,则只返回 true/false,而不是检查 spark 中的行数
Posted
技术标签:
【中文标题】如果列中的不同计数达到 10,则只返回 true/false,而不是检查 spark 中的行数【英文标题】:If distinct count reaches 10 in column then just return true/false instead checking laks of rows in spark 【发布时间】:2017-11-17 07:40:10 【问题描述】://实际上,它会遍历不同行的大量列,这是一种成本更高的方法,因为我需要检查不同计数是否达到 10,然后返回真/假。
val distcnt = dfFilter.select(dfFilter.col("colName")).distinct().count()
if (distcnt > 10)
//I need to do stuff here if it greater than 10 distinct rows
【问题讨论】:
【参考方案1】:无论是否昂贵,它都是唯一的方法,不同的计数不会在某些条件下被中断,它将遍历整个列,然后返回一个不同的计数值,据我所知,没有替代方法,但如果有人知道任何替代方案都会很高兴知道。
【讨论】:
我认为我们可以使用 rdd 并一一添加列值,如果它达到 10 然后返回 true/false RDD 比数据帧慢,所以如果可能的话尽量避免它们,直到必要时【参考方案2】:如果你的count条件总是10,那么你可以限制count函数之前返回的行数,
val distcnt = dfFilter.select(dfFilter.col("colName")).distinct().limit(11).count()
【讨论】:
这将检查随机 11 个值,以便给出错误的结果 在这里,你区分所有列行然后进行限制。仅与问题相同。请尝试 udf 并在 Set 集合中一一添加记录,然后返回 true/false。我不知道 udf 所以你可以通过使其成为可执行代码来发送代码。 需要什么:列 ['colName' here] 的不同值的计数并检查计数是否大于 10。这就是您的代码 sn-p 告诉我的。如果我错了,请纠正。以上是关于如果列中的不同计数达到 10,则只返回 true/false,而不是检查 spark 中的行数的主要内容,如果未能解决你的问题,请参考以下文章