Zeppelin0.5.6使用hive解释器
此zeppelin为官方0.5.6版,可能还在孵化阶段,可能出现一些bug吧。
配置
cp zeppelin-env.sh.template zeppelin-env.sh
vi zeppelin-env.sh
添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.axs7.ppc64le export HADOOP_CONF_DIR=/etc/hadoop/conf
启动zepplein
../bin/zeppelin-daemon.sh start
访问http://localhost:8080
修改hive Interpreter
记得修改完点右上restart,重启解释器。
查询
这就体现一下这个bug。
一、
对应解释器日志:
cat zeppelin-interpreter-hive--ldd-1.log
INFO [2016-11-01 10:06:53,238] ({pool-2-thread-8} HiveInterpreter.java[interpret]:326) - PropertyKey: default, SQL command: 'select * from hehe.haha' INFO [2016-11-01 10:06:53,328] ({pool-2-thread-8} SchedulerFactory.java[jobFinished]:135) - Job remoteInterpretJob_1478009213237 finished by scheduler org.apache.zeppelin.hive.HiveInterpreter197014835
二、
日志:
INFO [2016-11-01 10:08:39,412] ({pool-2-thread-15} HiveInterpreter.java[interpret]:326) - PropertyKey: *, SQL command: 'ect count(*) from hehe.haha' ERROR [2016-11-01 10:08:39,412] ({pool-2-thread-15} Job.java[run]:182) - Job failed org.apache.zeppelin.interpreter.InterpreterException: java.lang.NullPointerException at org.apache.zeppelin.interpreter.ClassloaderInterpreter.interpret(ClassloaderInterpreter.java:61) at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:93) at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:300) at org.apache.zeppelin.scheduler.Job.run(Job.java:169)
三、
日志:
INFO [2016-11-01 10:11:17,500] ({pool-2-thread-5} HiveInterpreter.java[interpret]:326) - PropertyKey: default, SQL command: 'select count(*) from hehe.haha' INFO [2016-11-01 10:11:17,568] ({pool-2-thread-5} SchedulerFactory.java[jobFinished]:135) - Job remoteInterpretJob_1478009477499 finished by scheduler org.apache.zeppelin.hive.HiveInterpreter197014835
结论:官方说%hive(${prefix}),若不加默认prefix为default,但从上面可以看出,第一次不加default时,select * 可以查询,但select count(*)就会报错,从日志中可以看出,它把count(*)括号中的*识别成了PropertyKey,select语句解析也发生了变化,导致报java空指针异常,但从第三个可以看出,加上default,hive解释器解析又变正常。感觉是个bug。
总的来说,可以用hive解释器了。由于当时使用zeppelin的时候还是0.5.6,经过四个月左右吧已经出了3个版本,最新版本0.6.2,功能更强悍了。最新版本是把hive解释器集成到了JDBC解释器中,为了不出现莫名奇妙的错误,还是把%hive(${prefix})写完整吧。
后续再进一步探索它的奥妙吧。