是否有更好的方法显示整个SPARK SQL数据框架



我想用Scala API显示整个Apache Spark SQL dataframe。我可以使用show()方法:

myDataFrame.show(Int.MaxValue)

是否有一种更好的方式显示整个数据框架,而不是使用Int.MaxValue

通常不建议将整个数据框显示给stdout,因为这意味着您需要将整个dataframe(所有值)拉到驱动程序(除非DataFrame已经是本地,否则您可以使用df.isLocal)。

,除非您提前知道数据集的大小足够小,以便驱动程序JVM进程具有足够的内存来容纳所有值,那么这样做是不安全的。这就是为什么DataFrame API的show()默认情况下仅显示前20行。

您可以使用返回Array[T]df.collect,然后在每行上迭代并打印它:

df.collect.foreach(println)

但是您将失去df.showString(numRows: Int)中实现的所有格式(show()内部使用)。

所以不,我想没有更好的方法。

一种方法是使用count()功能获取记录总数并使用show(rdd.count())

尝试,

df.show(35, false)

它将显示35行和35列值,具有完整值名称。

正如其他人建议的那样,打印整个DF是坏主意。但是,您可以使用df.rdd.foreachPartition(f)在不泛滥驱动程序JVM(y使用Collect)

的情况下打印出逐个分区。

没有什么比这更简洁了,但是如果您想避免使用Int.MaxValue,则可以使用collect并处理它,或者foreach。但是,对于没有多手动代码的表格格式,show是您可以做的最好的。

java中,我以两种方式尝试了它。这对我来说非常有效:

1。

data.show(SomeNo);

2。

data.foreach(new ForeachFunction<Row>() {
                public void call(Row arg0) throws Exception {
                    System.out.println(arg0);
                }
            });

我已经尝试过 show(),有时似乎有效。但是有时不起作用,请尝试一下:

println(df.show())

相关内容

  • 没有找到相关文章

最新更新