在烫印脚本

时间:2016-02-23 13:45:02

标签: scala sbt scalding

我试图在烫金脚本中显示控制台上的一些内容。当我在scalding shell中运行相同的逻辑时,我得到了所需的输出,当我运行脚本时,我收到一个错误: scripttest.scala:4:错误:值转储不是com.twitter.scalding.typed.TypedPipe [String]

的成员

脚本是

 import com.twitter.scalding._
 class scripttest(args:Args) extends Job(args){
 val hello = TypedPipe.from(TextLine("tutorial/data/hello.txt"))
 hello.dump
 }

当我在控制台中运行相同的逻辑时,它成功运行。 控制台中的输出: 你好,世界 再见世界

请解释为什么会发生这种情况以及如何在烫金脚本中打印到控制台。

1 个答案:

答案 0 :(得分:2)

仔细查看documentation后,您将在第34节中找到; 2.6 REPL参考",小节" 2.6.1在TypedPipe / Grouped / CoGrouped对象上可用的丰富" :

  

.dump:将内容打印到stdout(使用.toIterator)

因此dump在REPL中只有

我没有看到"烫伤方式"在控制台上写,我认为它也没有意义:你正在运行一个管道,所以唯一的保证里程碑"是管道的结束,当您将结果write放入文件时,就像在tutorial scripts上完成一样。

如果仅仅是印刷问题"你好我的工作开始了#34;请记住它只是一个Scala文件并使用println(对于更高级的日志记录,{ {3}}是你的朋友。)

在克隆存储库之后在本地运行脚本:

> ./sbt assembly
> ./scripts/scald.rb --local MyScript.scala

第一行将运行所有测试并构建" scald.rb",第二行中使用的脚本来运行您的烫伤脚本。