我正在开发一个自我应用程序,用户可以上传自己的数据集,这些数据集存储在动态创建的Cassandra表中。数据是从用户可以上传的文件中提取的。因此,每个数据集都写入自己的Cassandra表中,该表基于上传文件中的列标题建模,同时索引维度。
上传数据后,用户可以在应用程序中构建报告,分析等。我需要一种方法来允许用户根据匹配的键合并/连接来自两个或多个数据集/表的数据,并将结果写入新的Cassandra表。一旦创建了数据集/表,它就会保持不变,只能从中读取数据。
用户表1
用户表2
我需要在匹配员工ID 的用户表1 和用户表2 中合并数据并写入新表< / em>是动态创建的。
新表格
最好的方法是什么?
答案 0 :(得分:0)
您唯一的选择是在应用程序代码中进行连接。只有很少的细节可以提出正确的解决方案。
请添加有关表格密钥,使用模式的详细信息...一般情况下,您可以从使用的角度对cassandra进行建模,即从您对数据执行的查询开始。
为了在这个模式上合并2个表,你必须在应用程序中进行,创建第三个表(目标表)并用两个表中的数据填充它。您必须确保将页面中的数据读取为非OOM,这实际上取决于数据的大小。
另一个选择是将连接构建到Spark中,但在您的情况下可能过于工程化。
答案 1 :(得分:0)
您可以将合并表与用户的primary key
合并,以便合并的数据在一行中,并且由于它是一次性操作,因此应该是唯一的。
与用户点击时相比,您可以使用fetch size
批量浏览一个表(对于java,您可以检查query options但这是一种固定窗口的方法,该窗口将被加载并在到达时移动接下来获取元素的大小)。假设您已获取1000个项目的大小,从一个表格中迭代它们并在第二个表格中找到匹配项,并且在达到1000个项目后,将1000个插入批次放入新表格。
如果这很耗时,您可以按照建议使用其他工具,如Apache Spark或Spring Batch,并在后台通知用户它将会发生。