الحصول على خريطة مجمدة من كاساندرا في سكالا

0

لقد اتبعت مخطط جدول كاساندرا: -

CREATE TABLE test (
id text,
stats frozen<map<text, text>> )

لقد قمت بإنشاء تطبيق scala لاستخراج البيانات من كاساندرا وبعد بعض التلاعب سيتم تحديث البيانات مرة أخرى إلى كاساندرا.

val result =  session.execute("Select * from test where id= 'testid'")
val resultList = result.all()
val rows = resultList.iterator()

if (resultList.size() > 0) {
 while (rows.hasNext()) {
   val curRow = rows.next()
   val ID = curRow.getString("id")
   val statistics = curRow.getMap[String,String] ??????
 }
}

صف البيانات في جدول كاساندرا مثل هذا: -

('testid',{'a1': '10', 'a2': '0', 'a3': '0', 'a4': '22', 'd1': '0', 'd2': '1', 'd3': '1', 'd4': '0', 'exb': '0', 'inb': '6', 'satno': '10'})
('id123',{'a1': '10', 'a2': '0', 'd1': '0', 'd2': '1', 'd3': '1', 'd4': '0'})

أريد تعيين حقل الإحصائيات الخاص بي بالضبط في الإحصائيات. كيف يجب أن أفعل هذا الحقول الخاصة بي في عمود الإحصائيات ديناميكي لصف واحد قد يحتوي على 10 أزواج قيمة رئيسية للصف الآخر ، قد يحتوي على 7 أزواج قيمة رئيسية.

شكر،

1 إجابة

0

تحتاج إلى كتابته على النحو التالي:

val statistics = curRow.getMap[String,String]("stats", 
    classOf[String], classOf[String])

فمثلا،

val cluster = Cluster.builder().addContactPoint("127.0.0.1").build()
val session = cluster.connect()

val result =  session.execute("Select * from test.fmtest where id= 'id123'")
val resultList = result.all()
val rows = resultList.iterator()

if (resultList.size() > 0) {
  while (rows.hasNext()) {
    val curRow = rows.next()
    val ID = curRow.getString("id")
    val statistics = curRow.getMap[String,String]("stats", 
        classOf[String], classOf[String])
    println("id=" + ID + ", stats=" + statistics)
  }
}
cluster.close()

ستتم طباعة:

id=id123, stats={a1=10, a2=0, d1=0, d2=1, d3=1, d4=0}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام