如何在Cassandra中比较两个表

如何在Cassandra中比较两个表,cassandra,java-8,apache-spark-sql,gemfire,Cassandra,Java 8,Apache Spark Sql,Gemfire,我必须比较卡桑德拉中的两个表格以得出差异。这是要求。我们必须进行库存盘点,在盘点中输入/扫描库存中的每个项目,完成后,我们将所有项目与主库存表进行比较,以获得差异。 我在Cassandra中创建了一个临时表,在其中我将针对每次扫描插入记录 **TempInventory** userId storeId skuId PK(storeId, skuId) 我有主表和其他细节- **Inventory** storeId skuId skuDesc .. .. PK(storeId) 扫描完

我必须比较卡桑德拉中的两个表格以得出差异。这是要求。我们必须进行库存盘点,在盘点中输入/扫描库存中的每个项目,完成后,我们将所有项目与主库存表进行比较,以获得差异。 我在Cassandra中创建了一个临时表,在其中我将针对每次扫描插入记录

**TempInventory**

userId
storeId
skuId
PK(storeId, skuId)
我有主表和其他细节-

**Inventory**

storeId
skuId
skuDesc
..
..
PK(storeId)
扫描完成后,在提交时,我必须将tempInventory与Inventory表进行比较,以获得差异。既然我们不能使用连接,那么在Cassandra中这样做的最佳方式是什么

  • 在对象集合中获取Java类中的所有内容,然后进行比较(使用Java 8特性以获得更好的性能)[在这种情况下,清单表大小可能超过3000。因此,在JVM中获取所有内容是否合适)
  • 在Cassandra中使用spark SQL,它允许使用连接(spark对我来说是新的,所以没有更好的主意。一些示例链接会很有帮助)
  • 是否有其他可用的实用程序(例如来自Apache)
  • 我也在使用Gemfire。但我认为我们不能用复合密钥在Gemfire中创建区域。请纠正我

  • 请建议最合适的方法。

    正确,Cassandra没有提供任何内置机制来与表进行比较,您需要自己做

    第一个建议是在两个表中使用相同的主键。是否需要在临时表的主键中添加
    skuId
    ?这将使获取数据进行比较变得困难


    我认为答案取决于需要处理的数据量,使用Spark或Storm进行流处理是值得的。如果没有那么多,可以使用一个简单的Java程序。可能需要一段时间才能完成,但不必安装Spark或Storm。

    正确,Cassandra没有提供任何内置机制来与表进行比较,您需要自己完成

    第一个建议是在两个表中使用相同的主键。是否需要在临时表的主键中添加
    skuId
    ?这将使获取数据进行比较变得困难


    我认为答案取决于需要处理的数据量,使用Spark或Storm进行流处理是值得的。如果你没有那么多,你可以使用一个简单的Java程序。这可能需要一段时间才能完成,但你不必安装Spark或Storm。

    谢谢。多个用户可以扫描,他们可以扫描相同的sku。因此,我们不需要为相同的sku设置重复的行。这是为什么sku是PK的一部分。谢谢。多个用户可以扫描,他们可以扫描相同的sku。因此,我们不需要为相同的sku创建重复的行。这就是为什么sku是PK的一部分。