Próbuję zapisać dane strumieniowe w Cassandrze za pomocą Spark i Cassandra Spark Connector.Zapisz wartość null Wartości w Cassandra przy użyciu łącznika DataStax Spark
zrobiłem coś jak następuje:
utworzyć klasę modelu
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,
}
}
Mapowanie strumieniowego przesyłania zawartości do modelu
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]);
}
});
Zapisz:
CassandraStreamingJavaUtil.javaFunctions(contentsToModel).writerBuilder("data", "contents", CassandraJavaUtil.mapToRow(ContentModel.class)).saveToCassandra();
Jeśli s Wartości ome są null
pojawia się następujący błąd:
com.datastax.spark.connector.types.TypeConversionException: Cannot convert object null to struct.ValueRepr.
Czy istnieje sposób na przechowywanie wartości null przy użyciu Spark Cassandra Connector?
Nie sądzę. Próbowałem wstawić wartości null do tabeli Cassandra za pomocą sterownika mapowania Jastrzębiego Datastax i zakończyło się ono sukcesem, nawet jeśli typ kolumny to int i float. A Cassandra wyświetla również wartość null i zwraca wartość null, stąd stwierdzenie "Cassandra nie ma pojęcia f null" nie jest zbyt przekonujące. –