我是新手,并试图实现以下目标。我无法找到最好的方法来做到这一点。请建议。
我正在使用Spark 2.0&其数据集,Cassandra 3.7和Cassandra Java连接器
我有一个带有分区键和2个群集键的ColumnFamily。例如 myksyspace.myTable(some_id,col1,col2,col3,col4,col5,PRIMARY KEY(some_id,col1,col2))
我可以在myTableDataset中获取myksyspace.myTable的数据。数据具有大量行(可能是200000)。
每隔1小时后,我会从其他来源获取更新数据,其中可能有一些新数据不在我的数据库中,我想将其保存在数据库中。
我从其他来源收到的数据包含更新的数据,但没有“col2”的值。我在我的Java代码中的列表“dataListWithSomeNewData”中获得了其余的数据。
现在,我想将列表中的数据与myTableDataset中的数据进行匹配,并将col2从数据集复制到列表“dataListWithSomeNewData”,然后生成新数据集并将其保存回数据库中。这样我的现有数据就会更新。我希望为每个列表项插入新数据,为col2插入新的唯一值。我如何实现这一目标?
我想避免数据集上的collectAsList()以避免内存不足,因为我可能会在内存中加载大数据。使用collectAsList(),代码可以处理少量数据。
对此有任何建议/想法。我怎样才能做到这一点?
提前谢谢