我的堆栈是 Apache Spark 2.0、Spark Cassandra Java 连接器、Cassandra 3.7
这是我的要求。
我通过将列族数据提取到我的 Java 程序中创建了一个数据集 (ds1)。下一步是将新数据从外部源获取到新数据集 (ds2)。两个数据集的架构完全相同。但是现在的问题是,在将新值从 ds2 保存到数据库中时,我想以这样的方式更新列,使其先前的值 (ds1.col1) 将添加新值 (ds2.col1),然后保存数据库的新更新值,即 (ds2.col1 + ds1.col1)。
目前我通过以下方式获取 ds1.col1 的值
Dataset<SomeClass> existingData = ds1.filter((ds1.primarykey == ds2.primaryKey)? true : false);
myList = existingData.takeAsList(1);
Dataset<SomeClass> dataFromDB = myList.get(0);
ds2.setCol1(newVal + dataFromDB.getCol1()); //This is how I save the new value in databse. (previous value + new value)
据我了解 takeAsList() 它对性能有影响。另一种有效的方法是什么?请让我知道您的意见。如果您需要更多信息,请告诉我。
提前致谢。