Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java cassandra 3.x触发器示例错误_Java_Xml_Triggers_Cassandra - Fatal编程技术网

Java cassandra 3.x触发器示例错误

Java cassandra 3.x触发器示例错误,java,xml,triggers,cassandra,Java,Xml,Triggers,Cassandra,嘿,我想实现这个例子 但它不起作用,我不知道如何修复它 public class AuditTrigger implements ITrigger { private Properties properties = loadProperties(); public Collection<Mutation> augment(Partition update) { String auditKeyspace = properties.getProp

嘿,我想实现这个例子 但它不起作用,我不知道如何修复它

public class AuditTrigger implements ITrigger
{
    private Properties properties = loadProperties();

    public Collection<Mutation> augment(Partition update)
    {
        String auditKeyspace = properties.getProperty("keyspace");
        String auditTable = properties.getProperty("table");



        RowUpdateBuilder audit = new RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace, auditTable),
                                                      FBUtilities.timestampMicros(),
                                                      UUIDGen.getTimeUUID());


        audit.add("keyspace_name", update.metadata().ksName);
        audit.add("table_name", update.metadata().cfName);
        audit.add("primary_key", update.metadata().getKeyValidator().getString(update.partitionKey().getKey()));

        return Collections.singletonList(audit.build());
    }

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

        }
        return properties;
    }
}
公共类AuditTrigger实现ITrigger
{
私有属性=loadProperties();
公共集合扩充(分区更新)
{
字符串auditKeyspace=properties.getProperty(“keyspace”);
String auditTable=properties.getProperty(“表”);
RowUpdateBuilder audit=新的RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace,auditTable),
FBUtilities.timestampMicros(),
getTimeUUID());
add(“keyspace_name”,update.metadata().ksName);
audit.add(“table_name”,update.metadata().cfName);
audit.add(“主键”,update.metadata().getKeyValidator().getString(update.partitionKey().getKey());
返回Collections.singletonList(audit.build());
}
私有静态属性loadProperties()
{
属性=新属性();
InputStream stream=AuditTrigger.class.getClassLoader().getResourceAsStream(“AuditTrigger.properties”);
尝试
{
属性。加载(流);
}
捕获(例外e)
{
抛出新的运行时异常(e);
}
最后
{
//安静地关闭(流);
}
归还财产;
}
}
和xml代码:

  <project default="jar" name="trigger-example">
    <property name="cassandra.dir" value="../.." />
    <property name="cassandra.dir.lib" value="${cassandra.dir}/lib" />
    <property name="cassandra.classes" value="${cassandra.dir}/build/classes/main" />
    <property name="build.src" value="${basedir}/src" />
    <property name="build.dir" value="${basedir}/build" />
    <property name="conf.dir" value="${basedir}/conf" />
    <property name="build.classes" value="${build.dir}/classes" />
    <property name="final.name" value="trigger-example" />

    <path id="build.classpath">
        <fileset dir="${cassandra.dir.lib}">
            <include name="**/*.jar" />
        </fileset>
        <fileset dir="${cassandra.dir}/build/lib/jars">
            <include name="**/*.jar" />
        </fileset>
        <pathelement location="${cassandra.classes}" />
    </path>
    <target name="init">
        <mkdir dir="${build.classes}" />
    </target>

    <target name="build" depends="init">
        <javac destdir="${build.classes}" debug="true" includeantruntime="false">
            <src path="${build.src}" />
            <classpath refid="build.classpath" />
        </javac>
    </target>

    <target name="jar" depends="build">
        <jar jarfile="${build.dir}/${final.name}.jar">
            <fileset dir="${build.classes}" />
            <fileset dir="${conf.dir}">
                <include name="**/*.properties" />
            </fileset>
        </jar>
    </target>

    <target name="clean">
        <delete dir="${build.dir}" />
    </target>
    <dependencies>
<dependency>
    <groupId>org.apache.cassandra</groupId>
    <artifactId>cassandra-all</artifactId>
    <version>0.8.0-rc1</version>
</dependency>
</dependencies>
</project>

org.apache.cassandra
卡桑德拉
0.8.0-rc1
我得到一个错误: 实例无法解析或不是字段 当我想创建一个新的RowUpdateBuilder对象时。
有人能帮忙吗?

Cassandra trigger的类加载器不同。所以您应该将方法
loadProperties
提取到另一个类中,并打包到
$CASSANDRA/lib

CASSANDRA触发器的类加载器是不同的。所以您应该将方法
loadProperties
提取到另一个类中,并打包到pom中的
$CASSANDRA/lib

 <dependencies>
    <dependency>
        <groupId>org.apache.cassandra</groupId>
        <artifactId>cassandra-all</artifactId>
        <version>3.6</version>
    </dependency>
</dependencies>

org.apache.cassandra
卡桑德拉
3.6
代码必须是这样的,它对我有用

import java.util.*;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.Mutation;
import org.apache.cassandra.db.RowUpdateBuilder;
import org.apache.cassandra.db.partitions.Partition;
import org.apache.cassandra.triggers.ITrigger;
import org.apache.cassandra.utils.FBUtilities;
import static org.apache.cassandra.cql3.CQL3Type.logger;

public class CassandraTrigger implements ITrigger{
    public Collection<Mutation> augment(Partition update) {
        //Hard code properties, You can do that however you want
        String auditKeyspace = "test_networktopology";
        String auditTable = "timestamptest";
        RowUpdateBuilder audit = new RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace, auditTable),
                FBUtilities.timestampMicros(),
                update.partitionKey());
        Calendar calendar = Calendar.getInstance();
        audit.add("time", calendar.getTime());
        return Collections.singletonList(audit.build());
    }
  }
import java.util.*;
导入org.apache.cassandra.config.Schema;
导入org.apache.cassandra.db.org;
导入org.apache.cassandra.db.RowUpdateBuilder;
导入org.apache.cassandra.db.partitions.Partition;
导入org.apache.cassandra.triggers.ITrigger;
导入org.apache.cassandra.utils.FBUtilities;
导入静态org.apache.cassandra.cql3.CQL3Type.logger;
公共类CassandraTrigger实现了ITrigger{
公共集合扩充(分区更新){
//硬代码属性,您可以按自己的意愿执行
String auditKeyspace=“test\u networktopology”;
String auditTable=“timestamptest”;
RowUpdateBuilder audit=新的RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace,auditTable),
FBUtilities.timestampMicros(),
update.partitionKey());
日历=Calendar.getInstance();
add(“time”,calendar.getTime());
返回Collections.singletonList(audit.build());
}
}
pom中的

 <dependencies>
    <dependency>
        <groupId>org.apache.cassandra</groupId>
        <artifactId>cassandra-all</artifactId>
        <version>3.6</version>
    </dependency>
</dependencies>

org.apache.cassandra
卡桑德拉
3.6
代码必须是这样的,它对我有用

import java.util.*;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.Mutation;
import org.apache.cassandra.db.RowUpdateBuilder;
import org.apache.cassandra.db.partitions.Partition;
import org.apache.cassandra.triggers.ITrigger;
import org.apache.cassandra.utils.FBUtilities;
import static org.apache.cassandra.cql3.CQL3Type.logger;

public class CassandraTrigger implements ITrigger{
    public Collection<Mutation> augment(Partition update) {
        //Hard code properties, You can do that however you want
        String auditKeyspace = "test_networktopology";
        String auditTable = "timestamptest";
        RowUpdateBuilder audit = new RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace, auditTable),
                FBUtilities.timestampMicros(),
                update.partitionKey());
        Calendar calendar = Calendar.getInstance();
        audit.add("time", calendar.getTime());
        return Collections.singletonList(audit.build());
    }
  }
import java.util.*;
导入org.apache.cassandra.config.Schema;
导入org.apache.cassandra.db.org;
导入org.apache.cassandra.db.RowUpdateBuilder;
导入org.apache.cassandra.db.partitions.Partition;
导入org.apache.cassandra.triggers.ITrigger;
导入org.apache.cassandra.utils.FBUtilities;
导入静态org.apache.cassandra.cql3.CQL3Type.logger;
公共类CassandraTrigger实现了ITrigger{
公共集合扩充(分区更新){
//硬代码属性,您可以按自己的意愿执行
String auditKeyspace=“test\u networktopology”;
String auditTable=“timestamptest”;
RowUpdateBuilder audit=新的RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace,auditTable),
FBUtilities.timestampMicros(),
update.partitionKey());
日历=Calendar.getInstance();
add(“time”,calendar.getTime());
返回Collections.singletonList(audit.build());
}
}

您是在编译时还是在运行触发器时收到此错误?请包含适当的生成或运行日志。您是在编译时还是在运行触发器时收到此错误?请提供相应的生成或运行日志。您好,优素福,我们使用的是cassandra all 3.11.2版,它没有RowUpdateBuilder?您好,优素福,我们使用的是cassandra所有版本3.11.2,它没有RowUpdateBuilder?你能帮我一下吗。