package net.lenards; import java.io.Serializable; import java.text.MessageFormat; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.Function; import com.datastax.driver.core.Session; import com.datastax.spark.connector.cql.CassandraConnector; import com.datastax.spark.connector.japi.CassandraRow; import com.datastax.spark.connector.japi.rdd.CassandraJavaRDD; import static com.datastax.spark.connector.japi.CassandraJavaUtil.*; public class SparkCanaryCC implements Serializable { private static void verifyArgs(String[] args) { if (args.length != 2) { System.err.println("Arguments required"); System.exit(1); } } public static class SimplePair implements Serializable { private Integer key; private String value; public SimplePair() { /* Java Bean ctor */ } public SimplePair(Integer key, String value) { this.key = key; this.value = value; } public Integer getKey() { return key; } public void setKey(Integer key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } @Override public String toString() { return MessageFormat.format("(key: {0}, val: {1})", key, value); } } public static void main(String[] args) { verifyArgs(args); SparkConf conf = new SparkConf() .setAppName("Spark Canary (CC) - Test") .setMaster(args[0]) .set("spark.cassandra.connection.host", args[1]); JavaSparkContext sc = new JavaSparkContext(conf); CassandraConnector connector = CassandraConnector.apply(conf); try (Session session = connector.openSession()) { session.execute("DROP KEYSPACE IF EXISTS simple_canary_cc"); session.execute("CREATE KEYSPACE simple_canary_cc WITH " + "REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}"); session.execute("CREATE TABLE simple_canary_cc.simple_pair " + "(key int PRIMARY KEY, value text)"); } List<SimplePair> pairs = Arrays.asList( new SimplePair(1, "One"), new SimplePair(5, "Five"), new SimplePair(6, "Six"), new SimplePair(7, "Seven"), new SimplePair(9, "Nine"), new SimplePair(10, "Ten"), new SimplePair(12, "Twelve"), new SimplePair(16, "Sixteen"), new SimplePair(19, "Nineteen") ); JavaRDD<SimplePair> simplekvRDD = sc.parallelize(pairs); javaFunctions(simplekvRDD) .writerBuilder("simple_canary_cc", "simple_pair", mapToRow(SimplePair.class)) .saveToCassandra(); CassandraJavaRDD<CassandraRow> rdd = javaFunctions(sc) .cassandraTable("simple_canary_cc", "simple_pair") .select("key", "value"); long count = rdd.count(); System.out.format("Count: %d %n", count); List somePairs = rdd.take(9); System.out.println(somePairs); sc.stop(); } }