首页 > 解决方案 > 为什么 SparkR(在数据块上)在使用 spark 数据帧时不显示摘要函数输出?

问题描述

在数据块上,从 R 数据框开始:

x <- data.frame(n=1:1000)

现在 SparkR 汇总函数提供了很好的输出:

SparkR::summary(x)
   n         

分钟。: 1.0
1st Qu.: 250.8
中位数 : 500.5
Mean : 500.5
第三 Qu.: 750.2
Max. :1000.0

命令耗时 0.02 秒 -- @于 2020 年 9 月 9 日上午 9:46:57 在 aa_cluster_6w

接下来,我将 R 数据帧转换为 spark 数据帧:

y <- SparkR::createDataFrame(x=x)

我能够确认对象 y 确实是一个 Spark Dataframe:

class(y)

[1] "SparkDataFrame" attr(,"package") [1] "SparkR"

命令耗时 0.01 秒 -- @于 2020 年 9 月 9 日上午 9:47:35 在 aa_cluster_6w

不幸的是,当我尝试对其进行总结时,SparkR 库不会输出函数结果:

SparkR::summary(y)

SparkDataFrame[摘要:字符串,n:字符串]

命令耗时 0.48 秒 -- @于 2020 年 9 月 9 日上午 9:47:16 在 aa_cluster_6w

标签: rdatabrickssparkr

解决方案


在我写这个问题的时候,我想出了如何自己回答这个问题。所以我不妨自己记录一下答案:

Spark R 摘要函数返回一个数据框,而不是文本,因此必须将其转换为文本。两种方法如下:

display(SparkR::summary(y))

或者

SparkR::collect(SparkR::summary(y))

display 函数将 Spark Dataframes 打印为 databricks 笔记本中的良好输出。

Spark R collect 函数将 spark 数据帧拉入活动集群驱动程序上 RAM 中的本地对象中。对于包含统计摘要的微小数据帧,此操作是微不足道的。


推荐阅读