当前位置: 首页 > 知识库问答 >
问题:

Ruby:如何在Cassandra map中插入哈希值

严信瑞
2023-03-14

我试图使用Datastax驱动程序将作为<code>int、time、hash</code>提供的值存储到Cassandra中。

哈希显示为< code>{ "Q17.1_4"=

已将表定义为:

  • 整数
  • 时间戳
  • 地图
  • PK(int,时间戳)

我可以把PK插入ok,但是我很难把哈希值强制转换成Cassandra可以处理的东西。

创建了一个准备好的语句,并在(尝试)遍历值时使用它:

stmt = session.prepare( "insert into forms( id, stamp, questions ) values ( ?,?,? )" )

...
json_val.each{ |key,val|
    result = session.execute( stmt, val[ 'ID' ].to_i, Time.parse( val[ 'tDate' ]).to_i, val )
}

如果我将“val”作为哈希插入,我会收到此错误:

rb:53:在“绑定”中:期望正好有 3 个绑定参数,给出 2 个(参数错误)

这(对我来说)没有一种方法可以将哈希转换为卡桑德拉想要的。

如果我将val作为字符串插入(使用<code>hash.to_s</code>),我会得到以下错误:

/lib/cassandra/protocol/type_converter.rb:331:在varchar_to_bytes':未定义的方法encode'for 1: Fixnum(NoMachodError)

...将其转换为json字符串,将双引号更改为单引号等也是如此。

我可以使用cqlsh(命令行)插入值(EG<code>insert into forms(id,stamp,questions)values(123,12345678,{‘one‘:‘two‘,‘tree‘:‘four‘})

所以问题是——我如何将这个Ruby散列转换成Cassandra驱动程序可以接受的格式?

用:

  • Ruby 2.1.3
  • Cassandra 2.0(带有最新的Datastax驱动程序)

编辑:

' questions' hash的JSON值为{ "Q17.1_4":"val "," Q17.2":"other ",...}

另外,我可以插入前两列。在insert语句中省略第三个值是可行的,所以我知道这两个值不是问题的根源。

共有1个答案

戚晨
2023-03-14

发现两个问题:

  1. 文档中有一个注释:

如果最后一个参数是哈希,它将被视为选项。因此,在执行最后一个参数必须是映射数据类型的语句时,请确保传递空选项。

type _ converter . Rb:331:in < code > varchar _ to _ bytes ':1:fix num(NoMethodError)的未定义方法encode '

这让我相信在某个地方有一个无效值。为了解决这个问题,我创建了一个临时散列,并在将其添加到临时散列之前检查每个值以确保它是一个字符串。然后,使用这个临时值,我可以使用存储过程将其添加到DB中。

 类似资料:
  • 下面的代码是正确的,但我不明白为什么两行代码可以工作。我指的是最后一块。具体地说,我指的是这两行: newword->next=hashtable[index]; hashtable[index]=newword; 如果目标是在哈希表的索引处将节点追加到链表,那么为什么newword->next指向哈希表的索引,而该索引处可能已经有节点了。我认为它应该是newword->next=NULL,因为该

  • 主要内容:创建哈希,实例,实例,哈希内置方法,实例哈希(Hash)是类似 "key" => "value" 这样的键值对集合。哈希类似于一个数组,只不过它的索引不局限于使用数字。 Hash 的索引(或者叫"键")几乎可以是任何对象。 Hash 虽然和数组类似,但却有一个很重要的区别:Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了。 创建哈希 与数组一样,有各种不同的方式来创建哈希。您可以通过 new 类方法创建一个空的哈希:

  • 考虑@data是一个带有日期、类、名称和等级字段的Active记录数组。假设我想以两个哈希结束,一个是每个名称的所有日期的唯一集合;另一个按类、日期和名称细分以显示等级。 > 导致错误: nil:NilClass的未定义方法“[]=”

  • 所以我使用gem文件从reddit的首页拉链接。gem函数返回一个哈希,其中包含首页上的所有链接及其所有信息(评论、业力、作者、日期、链接、上升、下降等的#)。下面是包含我首页上第一个链接信息的哈希请求: {"modhash"= 结尾<code>,</code>分隔下一个链接,如下所示: {“种类”= 我基本上需要某种方法来解析这个散列的每个条目,这样我就可以将所有相关的东西存储到一个数组中。实际

  • 本章节我们学习另外一个可以组合多个的对象类——哈希,了解哈希是什么,如何创建一个哈希以及哈希对象的实例方法。 1. 什么是哈希 哈希是键值对的集合。—— 官方定义 哈希是另一种非常有用且广泛使用的东西,可用于存储其他对象。与仅作为列表的数组不同,哈希表就像字典。我们通过键(key)来查找哈希中的值(value)。好比我们有一个英汉词典,我们通过查找“hello的单词来找到中文意思"你好",此时,“

  • 循环在具有特定键值对的文本文件上运行三次。每个循环都会返回一个新的散列,如下所示。我想将这些散列存储到另一个散列中。,和是散列的关键: 我将上述散列初始化为而不是我想将它们存储到散列中。我想初始化更大的散列,比如。 但它只给了我