如何在 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 中漂亮地打印数据框?的主要内容,如果未能解决你的问题,请参考以下文章