问题标签 [cassandra-node-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
934 浏览

node.js - Cassandra node.js 驱动程序不接受破折号分隔的字符串

我使用这个驱动程序作为 cassandra 和我的节点 js 应用程序之间的桥梁。到目前为止,一切似乎都运行良好,除了以下问题:

问题 我有一个 varchar 类型的列,当我插入一个包含破折号 (-) 的字符串时,cassandra 会抛出错误String didn't validate.

我正在使用批处理语句,如下所示

varchar 在哪里

批处理语句是

输入参数为:

注意 当我看到这个问题时,我试图使用提示。

如何解决这个错误

0 投票
1 回答
1909 浏览

node.js - 使用 Node.js 驱动程序使用 Cassandra 查询 SELECT ... IN 的参数格式

我有一个带有 IN 参数的 Cassandra SELECT 查询,我想通过 Node 驱动程序运行该查询,但无法弄清楚语法。

在 cqlsh 控制台上,我可以运行此选择并获得正确的结果:

但是,尝试使用 Cassandra Node 驱动程序使用 ID 数组运行此查询时,我会收到各种错误,具体取决于格式。这是我尝试过的:

错误是:

ResponseError:uuid 类型的 item_id 的列表文字无效

有了这个:

错误是:

ResponseError:第 1:72 行在输入“[”处没有可行的替代方案(...WHERE company_id = 4 AND [item_id] in...)

item_ids 是一个字符串对象数组,它们是通过另一个 Cassandra 表上的选择获得的。

这是一个工作应用程序,其他不使用“SELECT .. IN”的查询工作正常。

我也可以让它以“丑陋”的方式工作,但不希望:

0 投票
0 回答
211 浏览

cassandra - 使用 Nodejs 驱动程序将布尔值插入 Cassandra 不起作用

我已经建立了一个 Cassandra 2.2 集群,包含 3 个节点,复制因子为 2,并创建了一个简单的表:

我正在使用 2.2 Datastax 的 Nodejs 驱动程序在表中插入数据。并像这样编辑数据:

当我插入新记录时,一切正常。当我尝试更改现有记录的启用值时会出现问题。奇怪的是启用的值是随机变化的。例如,如果我发出 3 个请求并将启用的属性更改为 ->true, false, true 在第三个请求之后它可能仍在false数据库中,或者在第二个请求之后它可能永远不会更改为 false。我不知道这是什么原因。

0 投票
1 回答
940 浏览

cassandra - Cassandra Node.js:流式传输大表中的所有行

我在 Cassandra 有一张桌子,实际上不是很大。只有 50k 行。我需要从该表中流式传输所有行并在 Elasticsearch 中对它们进行索引。

我使用以下方法在 Node.js 中编写了一个简单的脚本:

然后开始监听data事件,创建 1000 行的批量请求,暂停流,索引行并取消暂停流。

这适用于 1000-2000 行。但是现在由于表大小已经增长到 50000 行,我query time out error在从 Cassandra 获取时得到了。

所以这个过程甚至没有开始。解决此问题的推荐方法是什么?

0 投票
1 回答
2288 浏览

cassandra - cassandra 上次更新(auto_now),上次访问和创建(auto_now_add)

有没有办法我们可以自动更新列的创建和最后更新/访问的时间戳?

我们可以使用toTimestamp(now())函数来存储创建时间。但是我们有没有类似 的函数writetime(name),用于获取最后修改时间?是否有类似的功能可以读取创建时间和访问时间?

有没有办法让我自动生成和存储所有三个时间戳lastupdated/lastaccessed和时间戳?created

0 投票
1 回答
225 浏览

node.js - 在 Cassandra node.js 驱动程序中使用中等大小的 fetchSize 时出现帧流错误

我对 Cassandra node.js 驱动程序有一个奇怪的问题。当我尝试从某些分区中选择数据时,我收到此错误。

这里有一些非常奇怪的行为。

  • 较小的 s 不会发生这种情况fetchSize。例如,我可以始终使用 312 或更高的提取大小使其出错,但每次都使用 311 的提取大小。
  • 它只发生在某些分区键上。到目前为止,它似乎正在影响最近添加的键。
  • 在单个表中,for 的断点fetchSize是一致的。例如,我可以运行,SELECT * FROM TableX WHERE myKey = value1或者两者都将在240SELECT * FROM TableX WHERE myKey = value2时开始出错,比如说。fetchSize但是对于TableY,限制可能是 284。

我在这里真的有点不知所措。我怀疑这与从单个分区返回太多行有关,但我能够从其他分区获取大量数据(例如,fetchSize20000 的 a 在大多数分区上都可以正常工作)。

重现该问题的简单代码是

0 投票
1 回答
874 浏览

cassandra - dse 驱动程序连接被拒绝

我正在尝试连接到我在服务器上安装的 Datastax 企业 Cassandra。当我尝试连接时,我收到一个错误:

我猜 cassandra.yaml 中的某些内容限制了与 localhost 的连接?

任何帮助将不胜感激!我的 cassandra.yaml 有点长,无法发布,如果需要我可以发布链接

0 投票
1 回答
4881 浏览

node.js - 将时间戳插入 Cassandra

我有一个如下创建的表:

我可以使用以下节点代码简单地向表中添加一个新行:

但是,我收到以下错误:

'错误:日期 (24) 的预期长度为 8 或 0 字节

当我将时间戳更改为 epoc 时间时:

我得到:d

溢出错误:标准化天数太大而无法放入 C int

我可以通过 cqlsh 插入新行,所以我可能在 node.js 驱动程序中遗漏了一些东西。

任何想法?

谢谢

0 投票
2 回答
3402 浏览

cassandra - Cassandra 查询失败(墓碑)

所以这让我发疯。我尝试在 Cassandra 中查询我的一张表,结果显示查询失败。我试图深入挖掘其背后的原因,发现这是因为墓碑。我将 GC_GRACE_SECONDS 更改为零并使用 nodetool 触发压缩,当我再次查询时它工作正常。但是在随后的呼叫中,查询再次失败,原因相同。我正在使用 cassandra-nodejs 驱动程序。这是我的数据模型。

这是我要在该数据模型上执行的查询。

结果将有大约 40k 行。 表明如果我们删除某些内容,它将被标记为墓碑,并在为给定表设置 GC_GRACE_SECONDS 后被删除。如果我理解正确的话。

  1. 当我从不删除任何表行时,怎么会出现墓碑问题?
  2. 当且仅当我们删除一行时,一行将被标记为墓碑是真的吗?
  3. 清除墓碑,然后有时查询相同的作品,有时却没有,为什么会这样?
  4. 增加tombstone_failure_threshold值是个好主意吗?(单节点集群应用)

我正在使用 cassandra 3.5,带有 cqlsh 版本 5.0.1。并且查询在终端上运行良好,但是当我们使用外部客户端执行时出错(使用 nodejs 驱动程序的 cassandra 快速应用程序)。我有一个单节点集群应用程序。

编辑 1

这是我在字段中插入的空值的日志(我只插入了名称和时间戳);

这是我查询已执行删除查询的字段时的日志。最初,用户Dhaval15的名字是“aaaa”,然后是单元格 aaa。然后再次对同一用户执行选择查询给了我这个日志。

0 投票
1 回答
1526 浏览

node.js - Node.js 流/管道错误处理(错误时更改响应状态)

我的 Cassandra 数据库中有数百万行我想以 zip 文件的形式流式传输到客户端(不希望内存中可能存在巨大的 zip 文件)。我正在使用 Cassandra-Node 驱动程序中的 stream() 函数,通过管道连接到转换器,该转换器从我关心的每一行中提取一个字段并附加一个换行符,并通过管道将哪些管道归档到 Express Response 对象。这似乎工作正常,但我无法弄清楚如何在流式传输期间正确处理错误。我必须在为客户端流式传输之前设置适当的标头/状态,但是如果流式传输期间出现错误,例如在 dbStream 上,我想清理所有管道并将响应状态重置为类似于 404 .但是如果我在设置标题并开始流式传输后尝试重置状态,我会得到Can't set headers after they are sent. 当管道/流式传输到 Response 对象时,我已经查看了所有内容,但找不到如何正确处理 Node 中的错误。如果我无法在错误时发送正确的响应代码,客户端如何判断是否实际传输了有效数据?任何人都可以帮忙吗?