apache-sparkcassandraapache-flinkcassandra-2.1

Read & write data into cassandra using apache flink Java API


I intend to use apache flink for read/write data into cassandra using flink. I was hoping to use flink-connector-cassandra, I don't find good documentation/examples for the connector.

Can you please point me to the right way for read and write data from cassandra using Apache Flink. I see only sink example which are purely for write ? Is apache flink meant for reading data too from cassandra similar to apache spark ?


Solution

  • I had the same question, and this is what I was looking for. I don't know if it is over simplified for what you need, but figured I should show it none the less.

    ClusterBuilder cb = new ClusterBuilder() {
            @Override
            public Cluster buildCluster(Cluster.Builder builder) {
                return builder.addContactPoint("urlToUse.com").withPort(9042).build();
            }
        };
    
        CassandraInputFormat<Tuple2<String, String>> cassandraInputFormat = new CassandraInputFormat<>("SELECT * FROM example.cassandraconnectorexample", cb);
    
        cassandraInputFormat.configure(null);
        cassandraInputFormat.open(null);
    
        Tuple2<String, String> testOutputTuple = new Tuple2<>();
        cassandraInputFormat.nextRecord(testOutputTuple);
    
        System.out.println("column1: " + testOutputTuple.f0);
        System.out.println("column2: " + testOutputTuple.f1);
    

    The way I figured this out was thanks to finding the code for the "CassandraInputFormat" class and seeing how it worked (http://www.javatips.net/api/flink-master/flink-connectors/flink-connector-cassandra/src/main/java/org/apache/flink/batch/connectors/cassandra/CassandraInputFormat.java). I honestly expected it to just be a format and not the full class of reading from Cassandra based on the name, and I have a feeling others might be thinking the same thing.