2015-10-07 10 views
8

Ich versuche, Stromdaten in Cassandra mit Spark und Cassandra Spark Connector zu speichern.Speichern null Werte in Cassandra mit DataStax Spark Connector

Ich habe so etwas wie die folgenden:

eine Model-Klasse erstellen:

public class ContentModel { 
    String id; 

    String available_at; //may be null 

    public ContentModel(String id, String available_at){ 
    this.id=id; 
    this.available_at=available_at, 
    } 
} 

Mapping Streaming Content Modell:

JavaDStream<ContentModel> contentsToModel = myStream.map(new Function<String, ContentModel>() { 
     @Override 
     public ContentModel call(String content) throws Exception { 

      String[] parts = content.split(","); 
      return new ContentModel(parts[0], parts[1]); 
     } 
    }); 

sparen

CassandraStreamingJavaUtil.javaFunctions(contentsToModel).writerBuilder("data", "contents", CassandraJavaUtil.mapToRow(ContentModel.class)).saveToCassandra(); 

Wenn s ome Werte sind null ich die folgende Fehlermeldung erhalten:

com.datastax.spark.connector.types.TypeConversionException: Cannot convert object null to struct.ValueRepr. 

Gibt es eine Möglichkeit Nullwerte zu speichern Funken Cassandra Connector?

Antwort

0

Cassandra hat nicht das Konzept von Null. Eine Spalte ist leer oder gefüllt. Ich habe dieses Problem in der folgenden Weise gelöst: Ich habe die map-Methode verwendet und Null-Werte überprüft. Ich habe null mit einer leeren Zeichenfolge überschrieben. Das ist es. Funktioniert wirklich gut.

+0

Ich glaube nicht. Ich habe versucht, Null Werte in Cassandra Tabelle mit Datastax's Java-Mapping-Treiber einfügen und es ist erfolgreich, auch wenn der Spaltentyp ist Int und Float. Und Cassandra zeigt ebenfalls null an und gibt null zurück, daher ist die Aussage "Cassandra hat nicht das Konzept f null" nicht sehr überzeugend. –

0

In scala können Sie auch Optionen dafür verwenden.

+0

Bietet dieselben mehr Details – Panther

Verwandte Themen