HI, Can we apply *saveToCassandra method to a JdbcRDD *
Code: *Code:* *import* *org.apache*.spark.SparkContext *import* *org.apache*.spark.SparkContext._ *import* *org.apache*.spark.SparkConf *import* *org.apache*.spark.rdd.JdbcRDD *import* *com.datastax*.spark.connector._ *import* com.datastax.spark.connector.cql.CassandraConnector *import* com.datastax.bdp.spark.DseSparkConfHelper._ *import* java.sql.{Connection, DriverManager, ResultSet, PreparedStatement, SQLException, Statement} *object* HelloWorld { *def* main(args: Array[String]) { *def* createSparkContext() = { *val* conf = *new* SparkConf().set("spark.cassandra.connection.host" , "10.246.43.15") .setAppName("First Spark App") .setMaster("local") .set("cassandra.username", "username") .set("cassandra.password", "password") .forDse *new* SparkContext(conf) } *val* sc = createSparkContext() *val* user="hkonak0" *val** pass=*"Winter18" Class.forName("org.postgresql.Driver").newInstance *val* url = "jdbc:postgresql://gptester:5432/db_test" *val* myRDD27 = *new* JdbcRDD( sc, ()=> DriverManager.getConnection(url,user,pass),"select * from wmax_vmax.arm_typ_txt LIMIT ? OFFSET ?",5,0,1,(r: ResultSet) => {(r.getInt( "alarm_type_code"),r.getString("language_code"),r.getString( "alrm_type_cd_desc"))}) * myRDD27.saveToCassandra(* *"keyspace","arm_typ_txt",SomeColumns("alarm_type_code","language_code","alrm_type_cd_desc"))* println(myRDD27.count()) println(myRDD27.first) sc.stop() sys.exit() } } I am getting the error as below: *Exception in thread "main" java.lang.NoSuchMethodError: com.datastax.spark.connector.package$.toRDDFunctions(Lorg/apache/spark/rdd/RDD;Lscala/reflect/ClassTag;)Lcom/datastax/spark/connector/RDDFunctions* Regards, Satish Chandra On Tue, Aug 11, 2015 at 9:23 AM, satish chandra j <jsatishchan...@gmail.com> wrote: > HI All, > I have tried Commands as mentioned below but still it is errors > > dse spark-submit --master spark://10.246.43.15:7077 --class HelloWorld > --jars /home/missingmerch/ > postgresql-9.4-1201.jdbc41.jar,/home/missingmerch/dse.jar,/home/missingmerch/spark- > cassandra-connector-java_2.10-1.1.1.jar /home/missingmerch/etl-0.0. > 1-SNAPSHOT.jar > > dse spark-submit --master spark://10.246.43.15:7077 --class HelloWorld > --jars /home/missingmerch/ > postgresql-9.4-1201.jdbc41.jar,/home/missingmerch/dse.jar,/home/missingmerch/spark- > cassandra-connector-java_2.10-1.1.1.jar,/home/missingmerch/etl-0.0. > 1-SNAPSHOT.jar > > I understand only problem with the way I provide list of jar file in the > command, if anybody using Datastax Enterprise could please provide thier > inputs to get this issue resolved > > Thanks for your support > > Satish Chandra > > > On Mon, Aug 10, 2015 at 7:16 PM, Dean Wampler <deanwamp...@gmail.com> > wrote: > >> I don't know if DSE changed spark-submit, but you have to use a >> comma-separated list of jars to --jars. It probably looked for HelloWorld >> in the second one, the dse.jar file. Do this: >> >> dse spark-submit --master spark://10.246.43.15:7077 --class HelloWorld >> --jars /home/missingmerch/ >> postgresql-9.4-1201.jdbc41.jar,/home/missingmerch/dse.jar,/home/missingmerch/spark- >> cassandra-connector-java_2.10-1.1.1.jar /home/missingmerch/etl-0.0. >> 1-SNAPSHOT.jar >> >> I also removed the extra "//". Or put "file:" in front of them so they >> are proper URLs. Note the "snapshot" jar isn't in the --jars list. I assume >> that's where HelloWorld is found. Confusing, yes it is... >> >> dean >> >> Dean Wampler, Ph.D. >> Author: Programming Scala, 2nd Edition >> <http://shop.oreilly.com/product/0636920033073.do> (O'Reilly) >> Typesafe <http://typesafe.com> >> @deanwampler <http://twitter.com/deanwampler> >> http://polyglotprogramming.com >> >> On Mon, Aug 10, 2015 at 8:23 AM, satish chandra j < >> jsatishchan...@gmail.com> wrote: >> >>> Hi, >>> Thanks for quick input, now I am getting class not found error >>> >>> *Command:* >>> >>> dse spark-submit --master spark://10.246.43.15:7077 --class HelloWorld >>> --jars ///home/missingmerch/postgresql-9.4-1201.jdbc41.jar >>> ///home/missingmerch/dse.jar >>> ///home/missingmerch/spark-cassandra-connector-java_2.10-1.1.1.jar >>> ///home/missingmerch/etl-0.0.1-SNAPSHOT.jar >>> >>> >>> *Error:* >>> >>> java.lang.ClassNotFoundException: HelloWorld >>> >>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366) >>> >>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355) >>> >>> at java.security.AccessController.doPrivileged(Native Method) >>> >>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354) >>> >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425) >>> >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358) >>> >>> at java.lang.Class.forName0(Native Method) >>> >>> at java.lang.Class.forName(Class.java:270) >>> >>> at >>> org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:342) >>> >>> at >>> org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) >>> >>> at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) >>> >>> >>> Previously I could fix the issue by changing the order of arguments >>> passing in DSE command line interface but now I am not sure why the issue >>> again >>> >>> Please let me know if still I am missing anything in my Command as >>> mentioned above(as insisted I have added dse.jar and >>> spark-cassandra-connector-java_2.10.1.1.1.jar) >>> >>> >>> Thanks for support >>> >>> >>> Satish Chandra >>> >>> On Mon, Aug 10, 2015 at 6:19 PM, Dean Wampler <deanwamp...@gmail.com> >>> wrote: >>> >>>> Add the other Cassandra dependencies (dse.jar, >>>> spark-cassandra-connect-java_2.10) to your --jars argument on the command >>>> line. >>>> >>>> Dean Wampler, Ph.D. >>>> Author: Programming Scala, 2nd Edition >>>> <http://shop.oreilly.com/product/0636920033073.do> (O'Reilly) >>>> Typesafe <http://typesafe.com> >>>> @deanwampler <http://twitter.com/deanwampler> >>>> http://polyglotprogramming.com >>>> >>>> On Mon, Aug 10, 2015 at 7:44 AM, satish chandra j < >>>> jsatishchan...@gmail.com> wrote: >>>> >>>>> HI All, >>>>> Please help me to fix Spark Cassandra Connector issue, find the >>>>> details below >>>>> >>>>> *Command:* >>>>> >>>>> dse spark-submit --master spark://10.246.43.15:7077 --class >>>>> HelloWorld --jars ///home/missingmerch/postgresql-9.4-1201.jdbc41.jar >>>>> ///home/missingmerch/etl-0.0.1-SNAPSHOT.jar >>>>> >>>>> >>>>> *Error:* >>>>> >>>>> >>>>> WARN 2015-08-10 06:33:35 org.apache.spark.util.Utils: Service >>>>> 'SparkUI' could not bind on port 4040. Attempting port 4041. >>>>> >>>>> Exception in thread "main" java.lang.NoSuchMethodError: >>>>> com.datastax.spark.connector.package$.toRDDFunctions(Lorg/apache/spark/rdd/RDD;Lscala/reflect/ClassTag;)Lcom/datastax/spark/connector/RDDFunctions; >>>>> >>>>> at HelloWorld$.main(HelloWorld.scala:29) >>>>> >>>>> at HelloWorld.main(HelloWorld.scala) >>>>> >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> >>>>> at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>> >>>>> at >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> >>>>> at java.lang.reflect.Method.invoke(Method.java:606) >>>>> >>>>> at >>>>> org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358) >>>>> >>>>> at >>>>> org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) >>>>> >>>>> at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) >>>>> >>>>> >>>>> *Code:* >>>>> >>>>> *import* *org.apache*.spark.SparkContext >>>>> >>>>> *import* *org.apache*.spark.SparkContext._ >>>>> >>>>> *import* *org.apache*.spark.SparkConf >>>>> >>>>> *import* *org.apache*.spark.rdd.JdbcRDD >>>>> >>>>> *import* *com.datastax*.spark.connector._ >>>>> >>>>> *import* com.datastax.spark.connector.cql.CassandraConnector >>>>> >>>>> *import* com.datastax.bdp.spark.DseSparkConfHelper._ >>>>> >>>>> *import* java.sql.{Connection, DriverManager, ResultSet, >>>>> PreparedStatement, SQLException, Statement} >>>>> >>>>> *object* HelloWorld { >>>>> >>>>> *def* main(args: Array[String]) { >>>>> >>>>> *def* createSparkContext() = { >>>>> >>>>> *val** myJar = >>>>> *getClass.getProtectionDomain.getCodeSource.getLocation.getPath >>>>> >>>>> >>>>> *val* conf = *new* SparkConf().set( >>>>> "spark.cassandra.connection.host", "10.246.43.15") >>>>> >>>>> .setAppName("First Spark App") >>>>> >>>>> .setMaster("local") >>>>> >>>>> * .s*etJars(Array(myJar)) >>>>> >>>>> .set("cassandra.username", "username") >>>>> >>>>> .set("cassandra.password", "password") >>>>> >>>>> .forDse >>>>> >>>>> *new* SparkContext(conf) >>>>> >>>>> } >>>>> >>>>> >>>>> >>>>> *val* sc = createSparkContext() >>>>> >>>>> *val* user="hkonak0" >>>>> >>>>> *val** pass=*"Winter18" >>>>> >>>>> Class.forName("org.postgresql.Driver").newInstance >>>>> >>>>> *val* url = "jdbc:postgresql://gptester:5432/db_test" >>>>> >>>>> *val* myRDD27 = *new* JdbcRDD( sc, ()=> >>>>> DriverManager.getConnection(url,user,pass),"select * from >>>>> wmax_vmax.arm_typ_txt LIMIT ? OFFSET ?",5,0,1,(r: ResultSet) => >>>>> {(r.getInt("alarm_type_code"),r.getString("language_code" >>>>> ),r.getString("alrm_type_cd_desc"))}) >>>>> >>>>> myRDD27.saveToCassandra("keyspace","arm_typ_txt",SomeColumns( >>>>> "alarm_type_code","language_code","alrm_type_cd_desc")) >>>>> >>>>> println(myRDD27.count()) >>>>> >>>>> println(myRDD27.first) >>>>> >>>>> sc.stop() >>>>> >>>>> sys.exit() >>>>> >>>>> >>>>> >>>>> } >>>>> >>>>> } >>>>> >>>>> >>>>> >>>>> *POM XML:* >>>>> >>>>> >>>>> <dependencies> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>org.apache.spark</groupId> >>>>> >>>>> <artifactId>spark-core_2.10</artifactId> >>>>> >>>>> <version>1.2.2</version> >>>>> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>org.apache.hadoop</groupId> >>>>> >>>>> <artifactId>*hadoop*-client</artifactId> >>>>> >>>>> <version>1.2.1</version> >>>>> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>org.scala-*lang*</groupId> >>>>> >>>>> <artifactId>*scala*-library</artifactId> >>>>> >>>>> <version>2.10.5</version> >>>>> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>*junit*</groupId> >>>>> >>>>> <artifactId>*junit*</artifactId> >>>>> >>>>> <version>3.8.1</version> >>>>> >>>>> <scope>test</scope> >>>>> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>com.datastax.dse</groupId> >>>>> >>>>> <artifactId>*dse*</artifactId> >>>>> >>>>> <version>4.7.2</version> >>>>> >>>>> <scope>system</scope> >>>>> >>>>> <systemPath>C:\workspace\*etl*\*lib*\dse.jar</ >>>>> systemPath> >>>>> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> >>>>> <groupId>com.datastax.spark</groupId> >>>>> >>>>> <artifactId>spark-*cassandra*-connector-java_2.10</ >>>>> artifactId> >>>>> >>>>> <version>1.1.1</version> >>>>> >>>>> </dependency> >>>>> >>>>> </dependencies> >>>>> >>>>> >>>>> Please let me know if any further details required to analyze the issue >>>>> >>>>> >>>>> Regards, >>>>> >>>>> Satish Chandra >>>>> >>>> >>>> >>> >> >