Apache flink 如何在齐柏林飞艇中将Flink var的内容写入屏幕?

Apache flink 如何在齐柏林飞艇中将Flink var的内容写入屏幕?,apache-flink,apache-zeppelin,Apache Flink,Apache Zeppelin,我尝试在ApacheZeppelin中运行以下简单命令 %flink var rabbit=env.fromElements( 亚瑟:什么,在兔子后面, “提姆:是兔子!”, “亚瑟:你这个蠢货!你让我们都生气了!”, 蒂姆:那可不是普通的兔子。那是你见过的最肮脏、最残忍、脾气最坏的啮齿动物, 罗宾:你这个混蛋!我弄脏了我的盔甲,我太害怕了, 蒂姆:看,那只兔子有一英里宽的恶毒条纹,是个杀手 var counts=rabbit.flatMap{{{uu.toLowerCase.split(\\W

我尝试在ApacheZeppelin中运行以下简单命令

%flink
var rabbit=env.fromElements(
亚瑟:什么,在兔子后面,
“提姆:是兔子!”,
“亚瑟:你这个蠢货!你让我们都生气了!”,
蒂姆:那可不是普通的兔子。那是你见过的最肮脏、最残忍、脾气最坏的啮齿动物,
罗宾:你这个混蛋!我弄脏了我的盔甲,我太害怕了,
蒂姆:看,那只兔子有一英里宽的恶毒条纹,是个杀手
var counts=rabbit.flatMap{{{uu.toLowerCase.split(\\W+”)}.map{({uu,1)}.groupBy(0).sum(1)
counts.print()
我试着把结果打印在笔记本上。但不幸的是,我只得到以下输出

rabbit:org.apache.flink.api.scala.DataSet[String]=org.apache.flink.api.scala。DataSet@37fdb65c
计数:org.apache.flink.api.scala.AggregateDataSet[(字符串,Int)]=org.apache.flink.api.scala。AggregateDataSet@1efc7158
res103:org.apache.flink.api.java.operators.DataSink[(字符串,Int)]=DataSink“”(打印到System.out)

如何在齐柏林飞艇上将计数内容泄漏到笔记本中?

在齐柏林飞艇中打印此类计算结果的方法是:

%flink
counts.collect()
//或者你可能更喜欢
//counts.collect foreach println
输出:

(a,3)
(all,1)
(and,1)
(armor,1)
...

观察到这种行为的原因在于阿帕奇齐柏林飞艇和阿帕奇弗林克之间的相互作用。齐柏林飞艇捕获
控制台的所有标准输出。不过,Flink也会将输出打印到
System.out
,这正是调用
counts.print()
时发生的情况。bzz的解决方案之所以有效,是因为它使用
控制台打印结果

我打开了一个JIRA问题[1],并打开了一个请求[2]来纠正这种行为,以便您也可以使用
counts.print()

  • [1]
  • [2]