Я пытаюсь сохранить данные потока в Cassandra, используя Spark и Cassandra Spark Connector.Сохранить null Значения в Cassandra с использованием DataStax Spark Connector
я сделал что-то вроде следующего:
Создание модели класса:
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,
}
}
Отображение потокового контента в модели:
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]);
}
});
Сохранить:
CassandraStreamingJavaUtil.javaFunctions(contentsToModel).writerBuilder("data", "contents", CassandraJavaUtil.mapToRow(ContentModel.class)).saveToCassandra();
Если s екоторые значения null
я получаю следующее сообщение об ошибке:
com.datastax.spark.connector.types.TypeConversionException: Cannot convert object null to struct.ValueRepr.
Есть ли способ хранить нулевые значения с помощью искрового Cassandra Connector?
Я так не думаю. Я попытался вставить нулевые значения в таблицу Cassandra, используя драйвер сопоставления java сопоставления Datastax, и это успешно, даже если тип столбца - int и float. И Cassandra также отображает null и возвращает null, поэтому утверждение «Cassandra не имеет понятия f null» не очень убедительно. –