我有一个简单的Zeppelin笔记本,有三个段落 - 基于Zeppelin-Demo笔记本,但唯一的区别是bankText RDD是使用textFile方法创建的。
第1段:
%sh
wget http://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip
unzip bank.zip
第2段:
val bankText = sc.textFile("bank.zip")
case class BankRow(age: Integer, job: String, marital: String, education: String, balance: Integer)
val bank2 = bankText.map(s => s.split(";")).filter(s => s(0) != "\"age\"").map(
s => BankRow(s(0).toInt,
s(1).replaceAll("\"", ""),
s(2).replaceAll("\"", ""),
s(3).replaceAll("\"", ""),
s(5).replaceAll("\"", "").toInt
)
).toDF()
bank2.registerTempTable("bank2”)
第3段:
%sql
select age, count(1) value
from bank2
where age < 30
group by age
order by age
第1段和第2段运行良好 - 但第三段错误:
org.apache.spark.sql.AnalysisException: no such table bank2; line 2 pos 5 at
org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42) at
org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.getTable(Analyzer.scala:260) at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$7.applyOrElse(Analyzer.scala:268) at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$7.applyOrElse(Analyzer.scala:264) at
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57) at
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57)…
Zeppelin演示工作正常。我在我的沙盒上运行它,它使用为Hadoop 2.6(spark-1.5.2-bin-hadoop2.6.tgz)和Zeppelin 0.5.5构建的spark 1.5.2 - 再次使用二进制zeppelin-0.5.5-incubating-bin -all.tgz。
我怀疑它与SqlContext有关 - 因为我相信Zeppelin会注入它自己的SqlContext。
任何提示?感觉就像我错过了一些非常简单的东西。
答案 0 :(得分:2)
我已经找到了问题的解决方案。 Zeppelin中有一个错误,我需要重现并发送给团队。似乎如果你是Zeppelin的菜鸟(像我一样!)并创建你自己的sqlContext你有效地打破笔记本 - 直到你重新启动内核所有表都在错误的上下文中注册,后续段落没有在范围内的表。重新启动内核解决了这个问题。