Search code examples
scalacassandracassandra-3.0apache-zeppelindatastax-java-driver

Installing CassandraInterpreter on Zeppelin


I'm trying to install CassandraInterpreter on Zeppelin. As in documention is said I did:

bin/install-interpreter.sh --name cassandra

Which made cassandra folder with all dependecies. I have some concerns now. I'm using open-source cassandra 3.10. and Zeppelin version 0.7.0. As I saw by dependecies Zeppelin is downloading cassandra-deriver of datastax and I'm not using Datastaxs Cassandra.

Furthermore, I added Cassandra as Intepreter and made my first script:

%cassandra
HELP;

And something ugly happend:

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)

As I see, its problem in Scala version which is by default I mean 2.10.5 and Zeppelin is downloading the same. I tried so swap whole scala with 2.12.0 and I got error about Display... also scala error. Any ideas?

I'm suspecting on missmatch of Cassandra drivers since I have open-source Cassandra and driver is for Datastax and I cannot find the one for open-source.


Solution

  • So in order to install cassandra driver, you need to change little bit interpreter jars. In order to this, after you installed cassandra via zeppelin interpreter you need to go in your

    ZEPPELIN_HOME/zeppelin-server/interpreter/cassandra

    Afterwards you need this libs ->

    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
    

    It will work fine when after this change, just restart interpreter.