我有一个如下所示的哈希图
Map(351608084641351 -> List(0.0, 0.0, 1.0, 0.0, 1.547012087E9, 85.099209, 25.578898, 0.0), 351608087410838 -> List(0.0, 0.0, 1.0, 0.0, 1.547013043E9, 74.356467, 22.301069, 0.0))
我想要列“ id”,“ d1”,“ d2”,“ d3”,“ d4”,“ evt”,“ lt”,“ ln”,“ s”
key
的哈希图351608084641351是id列。
List(0.0, 0.0, 1.0, 0.0, 1.547012087E9, 85.099209, 25.578898, 0.0)
是
分别"d1","d2","d3","d4","evt","lt","ln","s"
如上所述,我想将此哈希图存储到cassandra表中。
我能够访问此哈希图的值和键,但无法找到将其存储在cassandra中的方法 我的哈希图是: HashMap [Long,List [Any]]
需要输出 表格为:
id d1 d2 d3 d4 evt lt ln s
351608084641351 0.0 0.0 1.0 0.0 1.547012087E9 85.099209 25.578898 0.0
答案 0 :(得分:0)
您可以在boundStatement上使用方法.setMap。
import scala.collection.JavaConvertors._
val statement = session.prepare(s"insert into $XYZ ($MAP) values (:$MAP)")
val map: Map[lang.Long, util.List[lang.Double]] = Map(long2Long(351608084641351) -> List(0.0, 0.0, 1.0, 0.0, 1.547012087E9, 85.099209, 25.578898, 0.0).map(num=> double2Double(num)).asJava)
val boundStatement = statement.bind
boundStatement.setMap("Column Name", map.asJava, classOf[java.lang.Long], classOf[java.util.List[java.lang.Double]]])
由于DataStax驱动程序使用Java来设置地图,因此我们需要使用JavaConvertors将scalaMap转换为Java地图。另外,我们还需要使用Java数据类型作为键和值。正如我所看到的那样,您将Long作为键,将List作为您的值,因此您将必须使用以下命令将它们转换为java.lang.Long
和Java.ArrayList<java.lang.Double>
methond long2Long
和double2Double
。
绑定该语句后,您可以执行该语句,应该将其保存到数据库中。
鉴于您的地图具有与ClassOf参数中提供的数据类型相同的数据类型。这意味着您可以为地图提供相同的数据类型,或者必须将其从scala转换为java。