Yur*_*man 36 scala apache-spark apache-spark-sql
我想用Scala API显示整个Apache Spark SQL DataFrame.我可以使用这个show()方法:
myDataFrame.show(Int.MaxValue)
Run Code Online (Sandbox Code Playgroud)
有没有比使用更好的方式来显示整个DataFrame Int.MaxValue?
Gre*_*ret 60
通常不建议将整个DataFrame显示到stdout,因为这意味着您需要将整个DataFrame(其所有值)拉到驱动程序(除非DataFrame已经是本地的,您可以检查df.isLocal).
除非您提前知道数据集的大小足够小,以便驱动程序JVM进程有足够的内存可用于容纳所有值,否则执行此操作并不安全.这就是show()默认情况下DataFrame API 仅显示前20行的原因.
您可以使用df.collect返回的内容Array[T]然后遍历每一行并打印它:
df.collect.foreach(println)
Run Code Online (Sandbox Code Playgroud)
但是你失去了df.showString(numRows: Int)(在show()内部使用)中实现的所有格式.
所以不,我想没有更好的方法.