2016-06-13 4 views
-2

может ли кто-нибудь поделиться примером в Java с составным первичным ключом в искровом sql для сохранения данных в Cassandra. С CQL я могу сделать это легко. Но то, что я делаю, находится внутри искрового задания, которое передает данные временного ряда из потока Кафки и сохраняет его в cassandra как rawdata. Затем, используя dataframe, я могу присоединиться к этой таблице со связанными таблицами и выполнить уточнение данных с использованием бизнес-правил, а затем сохранить данные в таблице уточненных данных.Использование Composite Key в потоке испускания DSE4.8

ответ

0

Я смог решить первую часть моего вопроса. То есть, сохранение данных в таблицу Cassandra с помощью составного первичного ключа с использованием spark-sql. В принципе, если мы уже создали таблицу с составным первичным ключом, это можно сделать легко. Нет никакой разницы, является ли ключ составным или нет. Я создал таблицу с основным ключом imei и дату со временем, используя CQL в cassandra. Тогда следующий код работал отлично для меня.

rowData.foreachRDD(rdd -> { 
      if(rdd.count()>0){ 
      SQLContext sqlContext = SQLContext.getOrCreate(sc); 
      Map<String, String> options = new HashMap<String, String>(); 
      options.put("table","data"); 
      options.put("keyspace","newavlview"); 

       org.apache.spark.sql.DataFrame wordsDataFrame = sqlContext.createDataFrame(rdd, XMLRowBean.class); 

       wordsDataFrame. 
       write().format("org.apache.spark.sql.cassandra") 
       .options(options).mode(SaveMode.Append) 
       .save(); 


      }