标签: cassandra-driver

汇合3.3升级后,Kafka-cassandra连接器出现故障

汇总升级到3.3.0后,Cassandra连接器出现故障.Cassandra驱动程序的版本是3.3.堆栈如下.

[2017-09-14 08:56:28,123] ERROR java.lang.reflect.InvocationTargetException 
(com.cantiz.nucleus.kafka.connector.cassandra.CassandraSinkTask:72)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.google.common.base.Throwables.propagate(Throwables.java:240)
at com.datastax.driver.core.NettyUtil.newEventLoopGroupInstance(NettyUtil.java:136)
at com.datastax.driver.core.NettyOptions.eventLoopGroup(NettyOptions.java:99)
at com.datastax.driver.core.Connection$Factory.<init>(Connection.java:774)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1446)
at com.datastax.driver.core.Cluster.init(Cluster.java:159)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:305)
at com.datastax.driver.core.Cluster.connect(Cluster.java:247)
at com.attinad.cantiz.iot.historian.cassandra.session.CassandraSessionManager.connect(CassandraSessionManager.java:33)
at com.cantiz.nucleus.kafka.connector.cassandra.CassandraSinkTask.start(CassandraSinkTask.java:61)
at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:232)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:145)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.datastax.driver.core.NettyUtil.newEventLoopGroupInstance(NettyUtil.java:134)
... 18 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.netty.channel.epoll.EpollEventLoop
at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:71)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:64)
at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:50)
at …
Run Code Online (Sandbox Code Playgroud)

java cassandra-3.0 confluent apache-kafka-connect cassandra-driver

5
推荐指数
1
解决办法
158
查看次数

哪个 Cassandra 驱动程序最适合 aiohttp?

问题是哪个 Cassandra python 驱动程序更适合与 aiohttp Web 框架一起使用。

目前,有两个可能的候选人:

  1. DataStax 的cassandra 驱动程序
  2. 艾约卡桑德拉

问题是,cassandra-driver 似乎更受欢迎,并有更多的支持。但另一方面它不支持 asyncio(实验性不稳定的实现),而 asyncio 对于运行 aiohttp web 服务器至关重要。

Aiocassandra 不那么受欢迎,维护+支持是一个问题。

那么 aiocassandra 的性能是否比 cassandra-driver 好得多,就正常运行时间、性能和支持而言,最佳选择是什么?

python cassandra aiohttp cassandra-driver

5
推荐指数
1
解决办法
648
查看次数

NoHostAvailableError:尝试查询的所有主机都失败了

我在一个EC2实例上安装了Cassandra,该实例包含一个带有SimpleStrategy和replcation因子1的密钥空间.

我还从安全组的任何地方访问了端口9042.

我有一个Node.js应用程序,其中包含以下代码:

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['12.34.567.890:9042',], keyspace: 'ks1' });

const query = 'CREATE TABLE table.name ( field1 text, field2 text, field3 counter, PRIMARY KEY (field1, field2));';

client.execute(query)
    .then(result => console.log(result));
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

NoHostAvailableError:尝试查询的所有主机都失败了.第一个主机尝试,12.34.567.890:9042:DriverError:连接超时.请参阅innerErrors.

我用cassandra-driver.

我已经确定Cassandra正在运行.

编辑:

正如Aaron所说,我在客户机上安装了cqlsh.当我去cqlsh 12.34.567.890 9042时,它返回:

连接错误:('无法连接到任何服务器',{'12 .34.567.890':错误(10061,"尝试连接到[('12 .34.567.890',9042)].最后一个错误:无法建立连接,因为目标机器积极拒绝它")})

正如Aaron所说,我在服务器上编辑了Cassandra.yaml,用12.34.567.890替换了localhost.我仍然得到同样的错误.

amazon-ec2 amazon-web-services cassandra node.js cassandra-driver

5
推荐指数
1
解决办法
1309
查看次数

Cassandra Java Driver 将字段名称转换为小写

我正在使用 cassandra-driver-core 版本 3.5.1

我在卡桑德拉有一张桌子。表中的所有字段都是驼峰式大小写并用双引号创建。这些字段需要采用驼峰式大小写,因为我的 solr 架构有驼峰式大小写,我们有大约 80-120 字段。

但是当我在这个表中插入我的 json 文档时,使用下面的代码:

//jsonData is json document in String 
Insert insertQuery = QueryBuilder.insertInto(keySpace, table).json(jsonData);
ResultSet resultSet = session.execute(insertQuery.toString());
Run Code Online (Sandbox Code Playgroud)

生成的插入查询:

INSERT INTO asda_search.GROCERIES JSON '{"catalogName":"some data", .....);
Run Code Online (Sandbox Code Playgroud)

cassandra 驱动程序将插入语句中的字段转换为小写,导致以下异常:

Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: JSON values map contains unrecognized column: catalogname
Run Code Online (Sandbox Code Playgroud)

在我的表字段名称是 catalogName

我应该怎么做,以便驱动程序不会小写我的字段?

更新:

我知道我可以创建查询如下:

QueryBuilder.insertInto(keySpace, table).values(fieldNameList, fieldValueList)
Run Code Online (Sandbox Code Playgroud)

在创建时,fieldNameList我可以为字段名称添加引号。

还有其他解决办法吗?

java cassandra-3.0 cassandra-driver

5
推荐指数
1
解决办法
399
查看次数

Cassandra-Driver 4.x 中的 localDataCenter 我应该使用什么

当我使用cassandra-driver3.x 版本时,一切正常。现在我已经升级了,我收到以下消息...

错误:ArgumentError:“localDataCenter”未在客户端选项中定义,也未在构造函数中指定。至少需要一个。

我的客户声明看起来像这样......

const client = new Client({
        contactPoints: this.servers,
        keyspace: "keyspace",
        authProvider,
        sslOptions,
        pooling: {
            coreConnectionsPerHost: {
                [distance.local]: 1,
                [distance.remote]: 1
            }
        },
        // TODO: Needed because in spite of the documentation provided by DataStax the default value is not 0
        socketOptions: {
            readTimeout: 0
        }
});
Run Code Online (Sandbox Code Playgroud)

localDataCenter 属性应该使用什么?

cassandra cassandra-driver

5
推荐指数
2
解决办法
7090
查看次数

如何在 Python 中将 dict 绑定到准备好的 Cassandra 语句?

如何传递字典和查询参数?

我可以做这样的代码。

prepared = session.prepare('select name from task where id = ?;')
bound = prepared.bind([1])
session.execute(bound)
Run Code Online (Sandbox Code Playgroud)

如何使用 dict 作为参数以及查询语法是什么?

这不起作用:

prepared = session.prepare('select name from task where id = %(id)s;')
bound = prepared.bind({"id": 1})
session.execute(bound)
Run Code Online (Sandbox Code Playgroud)

你能帮忙解决这个基本代码吗 - 看起来这是可能的,但我不知道有效的查询语法?

python cassandra cassandra-driver

2
推荐指数
1
解决办法
2773
查看次数