2016-06-13 55 views
-2

任何人都可以在java中使用复合主键在spark sql中共享示例以将数据保存在Cassandra中。有了CQL,我可以轻松完成。但是我正在做的是在一个Spark工作内部,它将来自Kafka流的时间序列数据流并将其作为raw数据保存到cassandra。然后使用数据框,我可以将此表与相关表连接起来,并使用业务规则执行数据细化,然后将数据存储在精细数据表中。在DSE4.8火花流中使用复合关键字

回答

0

我能解决我的问题的第一部分。也就是说,使用spark-sql将数据保存到具有复合主键的Cassandra表中。 基本上,如果我们已经创建了一个复合主键表,它可以很容易地完成。密钥是否合成没有区别。 我用Cassandra中的CQL创建了一个包含主键imei和日期的表格。 然后下面的代码为我完美工作。

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(); 


      }