java - 使用 DataStax Spark 连接器在 Cassandra 中保存空值

标签 java cassandra apache-spark

我尝试使用 Spark 和 Cassandra Spark Connector 将流数据保存到 Cassandra。

我做了类似下面的东西:

创建模型类:

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();

如果某些值为 null,我会收到以下错误:

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

有没有办法使用 Spark Cassandra 连接器存储空值?

最佳答案

在 Scala 中,您也可以为此使用 Options。

关于java - 使用 DataStax Spark 连接器在 Cassandra 中保存空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994609/

相关文章:

java - Java 中的方法重写抛出异常

java - 使用自引用数组,多边形是不可见的

cassandra - 如何在Cassandra 3.7中使用LIKE运算符查询 '%'字符?

scala - 处理 Spark UDF 中的所有列/整行

scala - scala Spark 中的 RDD 过滤器

java - 子类继承基类构造函数,同时保持代码重用原则

java - 链表的 add() 方法

database - 如何修复 Cassandra 服务器中的 'Active: active (exited)' 问题?

cassandra - 即使无法满足​​一致性,Cassandra 是否会写入节点(已启动)?

hadoop - Hive - 删除重复项,保留最新记录 - 所有这些