gpt4 book ai didi

apache-spark - 如何检查spark数据框是否为空?

转载 作者:行者123 更新时间:2023-12-04 04:25:29 25 4
gpt4 key购买 nike

现在,我必须使用 df.count > 0检查是否 DataFrame是否为空。但这有点低效。有没有更好的方法来做到这一点?

谢谢。

PS:我想检查它是否为空,以便我只保存DataFrame如果它不是空的

最佳答案

对于 Spark 2.1.0,我的建议是使用 head(n: Int)take(n: Int)isEmpty ,无论哪个对您的意图最清楚。

df.head(1).isEmpty
df.take(1).isEmpty

与 Python 等效:

len(df.head(1)) == 0  # or bool(df.head(1))
len(df.take(1)) == 0 # or bool(df.take(1))

使用 df.first()df.head()都将返回 java.util.NoSuchElementException如果 DataFrame 为空。 first()电话 head()直接调用 head(1).head .

def first(): T = head()
def head(): T = head(1).head
head(1)返回一个数组,所以取 head在该阵列上导致 java.util.NoSuchElementException当 DataFrame 为空时。

def head(n: Int): Array[T] = withAction("head", limit(n).queryExecution)(collectFromPlan)

所以不要调用 head() , 使用 head(1)直接获取数组然后你可以使用 isEmpty .
take(n)也相当于 head(n) ...

def take(n: Int): Array[T] = head(n)

limit(1).collect()相当于 head(1) (注意 limit(n).queryExecution 方法中的 head(n: Int)),所以以下都是等价的,至少从我可以说的来看,您不必捕获 java.util.NoSuchElementException DataFrame 为空时的异常。

df.head(1).isEmpty
df.take(1).isEmpty
df.limit(1).collect().isEmpty

我知道这是一个较旧的问题,因此希望它可以帮助使用较新版本 Spark 的人。

关于apache-spark - 如何检查spark数据框是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510230/

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