【问题标题】:How to pretty print value returned by Option in scala?如何在scala中漂亮地打印Option返回的值?
【发布时间】:2019-11-22 16:37:48
【问题描述】:

我有一个返回“Option[myDataStructure]. 当我从 Zeppelin 笔记本中调用它时,它说它不能在值上调用“show()”,因为它是“option”类型的。 有没有其他方法可以将我的返回值漂亮地打印为数据集? 使用println 打印真的很笨拙。

val returnValue: Option[myDataStructure] = myFunction(a,b)
returnValue.show(10,false)

【问题讨论】:

  • 什么是show()?这是在myDataStructure 上定义的方法吗?如果是这样,您可以使用returnValue.fold( showNone(10, false) ) (_.show(10, false))(您必须决定如何显示缺失值)。
  • show 可能指的是 Spark DataFrame 上的方法。我会使用:returnValue.fold( showNone(println('no data")) { df => df.show(10, false) }.
  • Show 是 Spark DataFRame 上的方法。但是,返回的值不是 DataFrame。无论如何,我可以将我的 set[MyDataStructure] 转换为 dataset[MyDataStructure] 吗? IT 会让我在数据集上调用 show() 并以可读格式打印值。

标签: scala apache-spark apache-zeppelin


【解决方案1】:

可以通过get获取Option中的值

returnValue.get.show(10,false)

【讨论】:

  • 如果 returnValue 为 None 就会爆炸。最好使用上面答案中@Krzysztof 建议的 foreach() 方法
【解决方案2】:

您可以使用foreachOption 执行副作用操作:

returnValue.foreach(_.show(10,false))

它只会在OptionSome 时运行,因此它比在OptionNone 的情况下调用get 可能会抛出java.util.NoSuchElementException 更安全。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多