【问题标题】:Updating a row based on a column value in cassandra using hector api使用 hector api 根据 cassandra 中的列值更新行
【发布时间】:2013-10-15 05:43:56
【问题描述】:

任何人都可以帮助了解如何使用 cassandra 的 hector api 更新具有特定列值的行。

即相当于

UPDATE table_name SET value=" " where column_name=column_value;

【问题讨论】:

  • 你试过用赫克托的CqlQuery吗?
  • 在 cql 查询中我们需要对参数进行硬编码,有没有办法像准备好的语句一样动态传递所需的参数?
  • 我不知道 Hector 是否支持准备好的语句,但 CQL 支持。您应该考虑使用 DataStax java 驱动程序,使用 CQL 时更简单。

标签: cassandra


【解决方案1】:

Cassandra 中的更新只能通过主键完成。

(更一般地说,我建议使用 https://github.com/datastax/java-driver 的原生 CQL 驱动程序,而不是半过时的 Hector。)

【讨论】:

    【解决方案2】:
        StringSerializer ss = StringSerializer.get();
        String keyspaceName = "Test_Keyspace";
        Cluster cluster = HFactory.getOrCreateCluster("TestCluster", new CassandraHostConfigurator("localhost:9160"));
        Keyspace ksp = HFactory.createKeyspace(keyspaceName, cluster);
    

    // 更新===============================

    ColumnFamilyTemplate<String, String> template = new ThriftColumnFamilyTemplate<String, String>(ksp,"Standard1",ss,ss);
    
        ColumnFamilyUpdater<String, String> updater = template.createUpdater("jsmith");
        updater.setString("first", "Devid");
    
        ColumnFamilyUpdater<String, String> updater2 = template.createUpdater("ksmith");
        updater2.setString("first", "Kohli");
        updater2.setString("middle", "Virat");
    
        try {
            template.update(updater);
            template.update(updater2);
    
            RangeSlicesQuery<String, String, String> rangeSlicesQuery3 = HFactory.createRangeSlicesQuery(ksp,ss,ss,ss);
            rangeSlicesQuery3.setColumnFamily("Standard1");
            rangeSlicesQuery3.setKeys("jsmith", "ksmith");
            rangeSlicesQuery3.setRange("jsmith", null, false, 4);
            QueryResult<OrderedRows<String, String, String>> result6 = rangeSlicesQuery3.execute();
        //  System.out.println(result6.get());
        } catch (HectorException e) {
            // do something ...
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 2012-04-25
      • 2014-08-03
      • 2012-01-16
      • 2013-02-22
      • 2014-06-02
      • 2013-05-23
      • 2013-08-27
      相关资源
      最近更新 更多