有没有更好的方法来显示整个 Spark SQL DataFrame?
Is there better way to display entire Spark SQL DataFrame?
我想用 Scala API 显示整个 Apache Spark SQL DataFrame。我可以使用 show()
方法:
myDataFrame.show(Int.MaxValue)
有没有比使用 Int.MaxValue
更好的显示整个 DataFrame 的方法?
没有比这更简洁的了,但是如果你想避免 Int.MaxValue
,那么你可以使用 collect
并处理它,或者 foreach
。但是,对于没有太多手动代码的表格格式,show
是您能做的最好的。
通常不建议将整个 DataFrame 显示到标准输出,因为这意味着您需要将整个 DataFrame(其所有值)拉到驱动程序(除非 DataFrame
已经是本地的,您可以用 df.isLocal
).
检查
除非您提前知道数据集的大小足够小,驱动程序 JVM 进程有足够的可用内存来容纳所有值,否则这样做是不安全的。这就是为什么 DataFrame API 的 show()
默认只显示前 20 行。
您可以使用 df.collect
which returns Array[T]
然后遍历每一行并打印它:
df.collect.foreach(println)
但是您丢失了 df.showString(numRows: Int)
中实现的所有格式(show()
内部使用)。
所以不,我想没有更好的方法了。
正如其他人所建议的那样,打印出整个 DF 是个坏主意。但是,您可以使用 df.rdd.foreachPartition(f)
逐个分区打印出来,而不会淹没驱动程序 JVM(y 使用 collect)
我已经尝试过 show() 并且它有时似乎有效。但有时不行,试一试:
println(df.show())
在java
我试过两种方法。
这对我来说非常有效:
1.
data.show(SomeNo);
2.
data.foreach(new ForeachFunction<Row>() {
public void call(Row arg0) throws Exception {
System.out.println(arg0);
}
});
一种方法是使用 count()
函数获取记录总数并使用 show(rdd.count())
.
试试,
df.show(35, 假)
它将显示 35 行和 35 列的值以及完整的值名称。
我想用 Scala API 显示整个 Apache Spark SQL DataFrame。我可以使用 show()
方法:
myDataFrame.show(Int.MaxValue)
有没有比使用 Int.MaxValue
更好的显示整个 DataFrame 的方法?
没有比这更简洁的了,但是如果你想避免 Int.MaxValue
,那么你可以使用 collect
并处理它,或者 foreach
。但是,对于没有太多手动代码的表格格式,show
是您能做的最好的。
通常不建议将整个 DataFrame 显示到标准输出,因为这意味着您需要将整个 DataFrame(其所有值)拉到驱动程序(除非 DataFrame
已经是本地的,您可以用 df.isLocal
).
除非您提前知道数据集的大小足够小,驱动程序 JVM 进程有足够的可用内存来容纳所有值,否则这样做是不安全的。这就是为什么 DataFrame API 的 show()
默认只显示前 20 行。
您可以使用 df.collect
which returns Array[T]
然后遍历每一行并打印它:
df.collect.foreach(println)
但是您丢失了 df.showString(numRows: Int)
中实现的所有格式(show()
内部使用)。
所以不,我想没有更好的方法了。
正如其他人所建议的那样,打印出整个 DF 是个坏主意。但是,您可以使用 df.rdd.foreachPartition(f)
逐个分区打印出来,而不会淹没驱动程序 JVM(y 使用 collect)
我已经尝试过 show() 并且它有时似乎有效。但有时不行,试一试:
println(df.show())
在java
我试过两种方法。
这对我来说非常有效:
1.
data.show(SomeNo);
2.
data.foreach(new ForeachFunction<Row>() {
public void call(Row arg0) throws Exception {
System.out.println(arg0);
}
});
一种方法是使用 count()
函数获取记录总数并使用 show(rdd.count())
.
试试,
df.show(35, 假)
它将显示 35 行和 35 列的值以及完整的值名称。