Scala日志打印

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala日志打印相关的知识,希望对你有一定的参考价值。

参考技术A 基于 scala-logging 和 logback 的日志打印模板,其中 logback 是一个更高效/更优于 log4j 的日志打印框架,目前正逐渐替代 log4j 的位置,以下为实现日志打印的几个步骤:

以 maven 为例:

在 resources 目录下添加 logback.xml 文件,该文件就类似于 log4j.properties

具体配置自行修改

打印效果:

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

【中文标题】如何在 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))

【讨论】:

以上是关于Scala日志打印的主要内容,如果未能解决你的问题,请参考以下文章

ab工具如何打印日志

agent打印不出日志

dockerdocker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

日志打印规范

打印日志查看调接口时间

日志怎么打印日志