Cassandra Trigger java.lang.AbstractMethodError

Хей, опитвам се да направя първите стъпки със спусъка Cassandra. Тригерът трябва само да получи мутацията и да я запише в обикновен .txt файл, нищо повече и нищо по-малко. Всеки път, когато правя isert, получавам следната грешка: java.lang.AbstractMethodError: org.apache.cassandra.triggers.invertedindex.augment(Lorg/apache/cassandra/db/partitions/Partition;)Ljava/util/Collection

Кодът е от пример, който намерих в интернет.

public class invertedindex implements ITrigger

{ // private static final Logger logger = LoggerFactory.getLogger(invertedindex.class); частни свойства свойства = loadProperties(); //частен обектен масив;

public void augment(ByteBuffer key, ColumnFamily update) throws IOException
{


        PrintWriter pWriter = null; 
        //long millis2;

       // List<RowMutation> mutations = new ArrayList<>();

        String indexKeySpace = properties.getProperty("keyspace");
        String indexColumnFamily = properties.getProperty("table");
        for (IColumn cell : update)
        {
            // Skip the row marker and other empty values, since they lead to an empty key.
            if (cell.value().remaining() > 0)
            {
                pWriter = new PrintWriter(new BufferedWriter(new FileWriter("log_trigger_test.txt",true)));
                RowMutation mutation = new RowMutation(indexKeySpace, cell.value());
               // mutation.add(properties.getProperty("columnfamily"), cell.name(), cell.value(), System.currentTimeMillis();
               // mutations.add(mutation);
               // mutation.addColumnOrSuperColumn(arg0, arg1);
                //System.out.println((mutation.toString()));
                pWriter.println((mutation.toString()));

            }
        }
        pWriter.close();
       // return mutations;

    }

private static Properties loadProperties()
{
    Properties properties = new Properties();
    InputStream stream = invertedindex.class.getClassLoader().getResourceAsStream("invertedindex.properties");
    try
    {
        properties.load(stream);
    }
    catch (Exception e)
    {
        throw new RuntimeException(e);
    }
    finally
    {
        FileUtils.closeQuietly(stream);
    }

    return properties;
}

}

Какво правя грешно тук? И има ли повече информация за Casssandra trigger? Намерих само някои стари неща?


person Emlon    schedule 24.05.2016    source източник


Отговори (1)


Изглежда, че използвате Cassandra 3.x, но сте написали тригер за преди 3.x. Вашият тригер трябва да изпълнява:

    public Collection<Mutation> augment(Partition update);

метод.

Разгледайте примера за тригер тук за това как да внедрите 3. x спусък.

person mikea    schedule 24.05.2016
comment
Това е много полезно, но знаете ли с новия 3.x начин за извличане на всички модифицирани клетки/колони? - person im2kul; 07.02.2018