如何在 Zeppelin/Spark/Scala 中漂亮地打印数据框?

Posted

技术标签:

【中文标题】如何在 Zeppelin/Spark/Scala 中漂亮地打印数据框?【英文标题】:How can I pretty print a data frame in Zeppelin/Spark/Scala? 【发布时间】:2017-12-10 07:49:30 【问题描述】:

我在 Zeppelin 0.7 笔记本中使用 Spark 2 和 Scala 2.11。我有一个可以像这样打印的数据框:

dfLemma.select("text", "lemma").show(20,false)

输出如下:

+---------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|text                                                                                                                       |lemma                                                                                                                                                                  |
+---------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|RT @Dope_Promo: When you and your crew beat your high scores on FUGLY FROG ???????? https://time.com/Sxp3Onz1w8                    |[rt, @dope_promo, :, when, you, and, you, crew, beat, you, high, score, on, FUGLY, FROG, https://time.com/sxp3onz1w8]                                                      |
|RT @axolROSE: Did yall just call Kermit the frog a lizard?  https://time.com/wDAEAEr1Ay                                        |[rt, @axolrose, :, do, yall, just, call, Kermit, the, frog, a, lizard, ?, https://time.com/wdaeaer1ay]                                                                     |

我正在尝试使 Zeppelin 中的输出更好,作者:

val printcols= dfLemma.select("text", "lemma")
println("%table " + printcols)

给出这个输出:

printcols: org.apache.spark.sql.DataFrame = [text: string, lemma: array<string>]

还有一个新的空白 Zeppelin 段落标题

[text: string, lemma: array]

有没有办法让数据框显示为格式良好的表格? 蒂亚!

【问题讨论】:

【参考方案1】:

在 Zeppelin 中,您可以使用 z.show(df) 显示漂亮的表格。这是一个例子:

val df = Seq(
  (1,1,1), (2,2,2), (3,3,3)
).toDF("first_column", "second_column", "third_column")

z.show(df)

【讨论】:

不错。由于没有意识到这一点,我为 pyspark 编写了自己的漂亮打印函数(利用 %table)。我在文档中的任何地方都找不到这个,但是...... @TwUxTLi51Nus 确实文档对于这部分不是很好。您可以找到有关 ZeppelinContext here 的一些信息,并在代码 (here) 中查看所有可用功能。此外,在笔记本中,您可以在 z 变量上使用 ctrl+space 进行检查。 ctrl + space 对我不起作用,但是(在 python 中)dir(z) 可以。 @schoon 不客气!您可以使用第二个参数限制行数:z.show(df, 10) 我总能找到更复杂的方法。我这样做了:z.show(dfLemma.select("racist", "lemma").limit(20))。会试试你的。【参考方案2】:

我知道这是一个旧线程,但以防万一它有帮助......

下面是我可以展示df 的一部分的唯一方法。尝试按照 cmets 中的建议向 .show() 添加第二个参数会引发错误。

z.show(df.limit(10))

【讨论】:

以上是关于如何在 Zeppelin/Spark/Scala 中漂亮地打印数据框?的主要内容,如果未能解决你的问题,请参考以下文章

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?