如何在zeppelin

时间:2015-08-05 20:03:02

标签: scala apache-spark apache-zeppelin

给出以下代码段:

val data = sc.parallelize(0 until 10000)
val local = data.collect 
println(s"local.size")

Zeppelin将local的整个值打印到笔记本屏幕。怎么可能改变这种行为?

6 个答案:

答案 0 :(得分:21)

您还可以尝试在代码周围添加大括号。

{val data = sc.parallelize(0 until 10000)
val local = data.collect 
println(s"local.size")}

答案 1 :(得分:5)

自0.6.0以来,Zeppelin在spark的解释器配置中提供了一个布尔标志zeppelin.spark.printREPLOutput(可通过GUI访问),默认设置为true。 如果将其值设置为false,那么您将获得所需的行为,即只输出显式的print语句。

另请参阅:https://issues.apache.org/jira/browse/ZEPPELIN-688

答案 2 :(得分:2)

FWIW,这似乎是新行为。 直到最近,我们一直在使用Livy 0.4,它仅输出最终语句的内容(而不是回显整个脚本的输出)。

当我们升级到Livy 0.5时,其行为更改为输出整个脚本。

虽然拆分段落并隐藏输出确实有效,但是对于Zeppelin的可用性来说似乎是不必要的开销。 例如,如果您需要刷新输出,则必须记住运行两段(即设置输出的那一段和包含实际println的那一段)。

恕我直言,这种方法还存在其他可用性问题,这使得恕我直言,齐柏林飞艇的使用方式也不太直观。

有人记录了这张JIRA票证来解决“问题”,请投票: LIVY-507

答案 3 :(得分:1)

Zeppelin以及spark-shell REPL始终打印整个解释器输出。

如果你真的想只打印local.size字符串 - 最好的方法是将println "local.size"语句放在单独的段落中。

然后你可以使用小" book"隐藏前一段的所有输出。右上角的图标。

答案 4 :(得分:1)

我要做的是避免这种情况,定义一个顶级函数,然后调用它:

def run() : Unit = {
    val data = sc.parallelize(0 until 10000)
    val local = data.collect 
    println(local.size)
}
run();

答案 5 :(得分:0)

我正在使用的一个简单技巧就是定义

def !() ="_ __ ___ ___________________________________________________"

并用作

$bang

高于或接近我要检查的代码 而且有效

res544: String = _ __ ___ ___________________________________________________

那我就把评论留在那儿;)

//希望对您有帮助