在DSE4.8火花流中使用复合键

时间:2016-06-13 03:02:52

标签: apache-spark datastax-enterprise datastax-startup

任何人都可以在java中使用spark sql中的复合主键共享示例,以便在Cassandra中保存数据。使用CQL,我可以轻松完成。但我正在做的是一个火花工作,它从Kafka流中传输时间序列数据并将其保存为cassandra作为rawdata。然后使用数据框,我可以将此表与相关表连接,并使用业务规则执行数据优化,然后将数据存储在精炼数据表中。

1 个答案:

答案 0 :(得分: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();


             }