Apache spark数据集通过使用新值添加旧值来保存DB中的新更新值

时间:2016-11-28 12:29:02

标签: apache-spark cassandra apache-spark-dataset

我的堆栈是Apache Spark 2.0,Spark Cassandra Java Connector,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(),它对性能有影响。什么是另一种有效的方法呢?请让我知道您的意见。 如果您需要更多信息,请告诉我们。

提前致谢。

0 个答案:

没有答案