在 Zeppelin 上安装 CassandraInterpreter

Installing CassandraInterpreter on Zeppelin

我正在尝试在 Zeppelin 上安装 CassandraInterpreter。正如文档中所说,我做到了:

bin/install-interpreter.sh --name cassandra

创建了包含所有依赖项的 cassandra 文件夹。我现在有些顾虑。我正在使用开源cassandra 3.10.和Zeppelin版本0.7.0。 正如我在 dependecies 看到的那样,Zeppelin 正在下载 datastaxcassandra-deriver 而我没有使用 Datastaxs Cassandra。

此外,我添加了 Cassandra 作为解释器并制作了我的第一个脚本:

%cassandra
HELP;

然后发生了一些丑陋的事情:

INFO [2017-06-01 12:50:42,695] ({pool-2-thread-2} SchedulerFactory.java[jobFinished]:137) - Job remoteInterpretJob_1496314241621 finished by scheduler org.apache.zeppelin.cassandra.CassandraInterpreter116220$
 INFO [2017-06-01 12:54:01,128] ({pool-1-thread-2} InterpreterGroup.java[close]:156) - Close interpreter group 2CJDRW3SU:shared_process
 INFO [2017-06-01 12:59:10,327] ({Thread-0} RemoteInterpreterServer.java[run]:95) - Starting remote interpreter server on port 39611
 INFO [2017-06-01 12:59:10,836] ({pool-1-thread-2} RemoteInterpreterServer.java[createInterpreter]:190) - Instantiate interpreter org.apache.zeppelin.cassandra.CassandraInterpreter
 INFO [2017-06-01 12:59:10,930] ({pool-2-thread-2} SchedulerFactory.java[jobStarted]:131) - Job remoteInterpretJob_1496314750927 started by scheduler org.apache.zeppelin.cassandra.CassandraInterpreter15405091$
 INFO [2017-06-01 12:59:10,936] ({pool-2-thread-2} CassandraInterpreter.java[open]:164) - Bootstrapping Cassandra Java Driver to connect to 10.60.213.61,on port 9042
 INFO [2017-06-01 12:59:11,281] ({pool-2-thread-2} NettyUtil.java[<clinit>]:83) - Did not find Netty's native epoll transport in the classpath, defaulting to NIO.
 INFO [2017-06-01 12:59:11,880] ({pool-2-thread-2} DCAwareRoundRobinPolicy.java[init]:95) - Using data-center name 'datacenter1' for DCAwareRoundRobinPolicy (if this is incorrect, please provide the correct d$
 INFO [2017-06-01 12:59:11,882] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
 INFO [2017-06-01 12:59:11,883] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
 INFO [2017-06-01 12:59:11,883] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
 INFO [2017-06-01 12:59:11,883] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
 INFO [2017-06-01 12:59:11,883] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
 INFO [2017-06-01 12:59:11,884] ({pool-2-thread-2} Cluster.java[init]:1485) - New Cassandra host /xx.xx.xxx.xx:9042 added
ERROR [2017-06-01 12:59:11,991] ({pool-2-thread-2} Job.java[run]:188) - Job failed
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
        at org.fusesource.scalate.TemplateEngine.<init>(TemplateEngine.scala:170)
        at org.apache.zeppelin.cassandra.DisplaySystem$.<init>(DisplaySystem.scala:37)
        at org.apache.zeppelin.cassandra.DisplaySystem$.<clinit>(DisplaySystem.scala)
        at org.apache.zeppelin.cassandra.DisplaySystem$NoResultDisplay$.<init>(DisplaySystem.scala:369)
        at org.apache.zeppelin.cassandra.DisplaySystem$NoResultDisplay$.<clinit>(DisplaySystem.scala)
        at org.apache.zeppelin.cassandra.EnhancedSession.<init>(EnhancedSession.scala:40)
        at org.apache.zeppelin.cassandra.InterpreterLogic.<init>(InterpreterLogic.scala:98)
        at org.apache.zeppelin.cassandra.CassandraInterpreter.open(CassandraInterpreter.java:189)
        at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:69)
        at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:482)
        at org.apache.zeppelin.scheduler.Job.run(Job.java:175)
        at org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:162)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)

正如我所见,它在默认情况下的 Scala 版本中存在问题,我的意思是 2.10.5 和 Zeppelin 正在下载相同的内容。我尝试将整个 Scala 与 2.12.0 交换,但我也收到关于 Display... 的错误斯卡拉错误。有任何想法吗?

我怀疑 Cassandra 驱动程序不匹配,因为我有开源的 Cassandra 并且驱动程序是用于 Datastax 的,但我找不到开源的。

因此,为了安装 cassandra 驱动程序,您需要稍微更改一下解释器 jars。 为此,在通过飞艇解释器安装 cassandra 后,您需要进入

ZEPPELIN_HOME/zeppelin-server/interpreter/cassandra

之后你需要这个库 ->

cassandra-driver-core-3.0.1.jar   netty-common-4.0.33.Final.jar            
scalate-core_2.11-1.7.1.jar      commons-lang3-3.3.2.jar          
netty-handler-4.0.33.Final.jar    scalate-util_2.11-1.7.1.jar
guava-16.0.1.jar                 
netty-transport-4.0.33.Final.jar         
scala-xml_2.11-1.0.1.jar
lz4-1.3.0.jar                    
scala-compiler-2.11.2.jar               
slf4j-api-1.7.10.jar
metrics-core-3.1.2.jar          
scala-library-2.11.2.jar                 
snappy-java-1.0.5.4.jar
netty-buffer-4.0.33.Final.jar    
scala-parser-combinators_2.11-1.0.1.jar  
zeppelin-cassandra_2.11-0.7.2.jar
netty-codec-4.0.33.Final.jar     
scala-reflect-2.11.2.jar

此更改后,只需重新启动解释器即可正常工作。