Omk*_*kar 5 log4j scala apache-spark
我需要将df.show()的输出保存为字符串,以便我可以直接通过电子邮件发送.
例如,下面的例子来自官方的火花文档,:
val df = spark.read.json("examples/src/main/resources/people.json")
// Displays the content of the DataFrame to stdout
df.show()
// +----+-------+
// | age| name|
// +----+-------+
// |null|Michael|
// | 30| Andy|
// | 19| Justin|
// +----+-------+
Run Code Online (Sandbox Code Playgroud)
我需要将上表保存为在控制台中打印的字符串.我确实看了log4j来打印日志,但是没有关于仅记录输出的任何信息.
有人可以帮我吗?
scala.Console有这种withOut方法的方法:
val outCapture = new ByteArrayOutputStream
Console.withOut(outCapture) {
df.show()
}
val result = new String(outCapture.toByteArray)
Run Code Online (Sandbox Code Playgroud)
解决方法是将标准输出重定向到变量:
val baos = new java.io.ByteArrayOutputStream();
val ps = new java.io.PrintStream(baos);
val oldPs = Console.out
Console.setOut(ps)
df.show()
val content = baos.toString()
Console.setOut(oldPs)
Run Code Online (Sandbox Code Playgroud)
请注意,我在这里有一个弃用警告。
您还可以重新实现Dataset.showString生成数据的方法。take它在后台使用。也许现在也是创建公关公开的好时机showString?:)
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |