任何人都可以在java中使用spark sql中的复合主键共享示例,以便在Cassandra中保存数据 . 使用CQL,我可以轻松完成 . 但我正在做的是一个火花工作,它从Kafka流中传输时间序列数据并将其保存为cassandra作为rawdata . 然后使用数据框,我可以将此表与相关表连接,并使用业务规则执行数据精炼,然后将数据存储在精炼数据表中 .
我能够解决我问题的第一部分 . 也就是说,使用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(); }
1 回答
我能够解决我问题的第一部分 . 也就是说,使用spark-sql将数据保存到带有复合主键的Cassandra表中 . 基本上,如果我们已经创建了一个包含复合主键的表,则可以轻松完成 . 密钥是否是复合密钥没有区别 . 我在cassandra中使用CQL创建了一个包含主键imei和日期的表 . 然后下面的代码完美地为我工作 .