如何通过更改架构和添加其他属性将DataFrame从Spark保存到Cassandra表

时间:2015-11-13 09:16:35

标签: java apache-spark cassandra spark-cassandra-connector

我使用Spark SQL从Cassandra数据库中检索数据:

DataFrame customers = sqlContext.cassandraSql("SELECT email, first_name, last_name FROM customer " +
                "WHERE CAST(store_id as string) = '" + storeId + "'");

之后我做了一些过滤,我想将这些数据保存到另一个看起来像这样的Cassandra表中:

store_id uuid,
report_name text,
report_time timestamp,
sharder int,
customer_email text,
count int static,
firts_name text,
last_name text,
PRIMARY KEY ((store_id, report_name, report_time, sharder), customer_email)

DataFrame保存到新表中时,如何添加这些附加属性?另外,使用此示例对Cassandra长行进行分片的最佳做法是什么?我期望在DataFrame中有4k-6k的记录,因此必须对长行进行分片,但我不确定是否计算记录然后更改sharder一定数量的项目是Spark或Cassandra的最佳实践。

2 个答案:

答案 0 :(得分:3)

拥有DataFrame之后,您可以定义一个案例类,它具有添加了属性的新架构的结构。

您可以像这样创建案例类:case class DataFrameRecord(property1: String, property2: Long, property3: String, property4: Double)

然后,您可以使用map将{1}}

转换为新结构

答案 1 :(得分:0)

您需要执行某种transformation(例如map())以将属性添加到数据框。