我在Must submit topologies using the 'storm' client script so that StormSubmitter knows which jar to upload使用IDE向生产集群提交拓扑时遇到了问题,而如果我使用storm jar命令在命令行中执行,它就像天堂一样运行.我从githublink看过相同的例子.
对于提交拓扑,我使用这些行
conf.put(Config.NIMBUS_HOST, NIMBUS_NODE);
conf.put(Config.NIMBUS_THRIFT_PORT,6627);
conf.put(Config.STORM_ZOOKEEPER_PORT,2181);
conf.put(Config.STORM_ZOOKEEPER_SERVERS,ZOOKEEPER_ID);
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter submitter = new StormSubmitter();
submitter.submitTopology("test", conf, builder.createTopology());
Run Code Online (Sandbox Code Playgroud)
如果这是正确的运行方法,请建议我?
ERROR [WRITE-/10.10.35.30] 2013-06-19 23:15:56,907 CassandraDaemon.java (line 175) Exception in thread Thread[WRITE-/10.10.35.30,5,main]
java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:79)
at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:66)
at org.apache.cassandra.net.OutboundTcpConnection.connect(OutboundTcpConnection.java:341)
at org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:143)
Run Code Online (Sandbox Code Playgroud)
当我知道问题时,我发现这个Snappy压缩的本机库snappy-1.0.4.1-libsnappyjava.so包含在snappy-java-1.0.4.1.jar文件中.当JVM初始化JAR时,库将添加到默认临时目录中.如果使用noexec选项装入默认临时目录,则会导致上述异常.
我在cassandra.in.sh中添加了JVM_OPTS = -Dorg.xerial.snappy.tempdir =/tmp,它仍然无效.我也尝试直接指定临时目录
./bin/cassandra -Dorg.xerial.snappy.tempdir=/tmp
Run Code Online (Sandbox Code Playgroud)
在同一台机器上cassandra版本1.0.12工作正常.
任何帮助将不胜感激.
在Cassandra中是否可以在select语句中的where子句之后使用多个条件联合在一起,就像在任何RDBMS中一样.这是我的代码:
SELECT * from TABLE_NAME WHERE COND1= 'something' OR COND2 = 'something';
Run Code Online (Sandbox Code Playgroud) 我是Cassandra的新手我想在Cassandra做一个CRUD操作.我可以从java类连接Cassandra.但现在当我做CRUD它不工作.这是我的代码..
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
public class AnotherClient {
private Session session;
private Cluster cluster;
public void connect(String node) {
cluster = Cluster.builder().addContactPoint(node).build();
Metadata metadata = cluster.getMetadata();
System.out.println("Cassandra connection established");
System.out.printf("Connected to cluster: %s\n",
metadata.getClusterName());
for (Host host : metadata.getAllHosts()) {
System.out.printf("Datatacenter: %s; Host: %s; Rack: %s \n",
host.getDatacenter(), host.getAddress(), host.getRack());
session = cluster.connect();
}
}
public void createSchema() {
session.execute("CREATE KEYSPACE simplex WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':3};");
session.execute("CREATE TABLE simplex.songs (" …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用此命令从Cassandra数据库中检索数据:
select A_NO from Activity where CALL_TYPE IN ('MOC');//here CALL_TYPE is not the row id
Run Code Online (Sandbox Code Playgroud)
但它显示:
Expected key 'KEY' to be present in where clause for 'Activity'
Run Code Online (Sandbox Code Playgroud)
在cassandra中是否有可能借助非主键过滤数据?
我一直在尝试使用下面的行集创建索引.
KeyspaceDefinition fromCluster = cluster.describeKeyspace(KEYSPACE);
ColumnFamilyDefinition cfDef = fromCluster.getCfDefs().get(0);
BasicColumnFamilyDefinition columnFamilyDefinition = newBasicColumnFamilyDefinition(cfDef);
BasicColumnDefinition columnDefinition = new BasicColumnDefinition();
columnDefinition.setName(StringSerializer.get().toByteBuffer("A_NO"));
columnDefinition.setIndexName("A_NO_idx");
columnDefinition.setIndexType(ColumnIndexType.KEYS);
columnDefinition.setValidationClass(ComparatorType.UTF8TYPE.getClassName());
columnFamilyDefinition.addColumnDefinition(columnDefinition);
Run Code Online (Sandbox Code Playgroud)
但我无法这样做.实际上我动态地将数据存储在列中,并动态创建这些列,然后为了更好的查询目的,我试图将索引放在某些特定的列上.有任何建议请如何做到这一点.