我试图在烫金脚本中显示控制台上的一些内容。当我在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
}
当我在控制台中运行相同的逻辑时,它成功运行。 控制台中的输出: 你好,世界 再见世界
请解释为什么会发生这种情况以及如何在烫金脚本中打印到控制台。
答案 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",第二行中使用的脚本来运行您的烫伤脚本。