-2
任何人都可以在java中使用复合主键在spark sql中共享示例以将数据保存在Cassandra中。有了CQL,我可以轻松完成。但是我正在做的是在一个Spark工作内部,它将来自Kafka流的时间序列数据流并将其作为raw数据保存到cassandra。然后使用数据框,我可以将此表与相关表连接起来,并使用业务规则执行数据细化,然后将数据存储在精细数据表中。在DSE4.8火花流中使用复合关键字
任何人都可以在java中使用复合主键在spark sql中共享示例以将数据保存在Cassandra中。有了CQL,我可以轻松完成。但是我正在做的是在一个Spark工作内部,它将来自Kafka流的时间序列数据流并将其作为raw数据保存到cassandra。然后使用数据框,我可以将此表与相关表连接起来,并使用业务规则执行数据细化,然后将数据存储在精细数据表中。在DSE4.8火花流中使用复合关键字
我能解决我的问题的第一部分。也就是说,使用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();
}