我使用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的最佳实践。
答案 0 :(得分:3)
拥有DataFrame之后,您可以定义一个案例类,它具有添加了属性的新架构的结构。
您可以像这样创建案例类:case class DataFrameRecord(property1: String, property2: Long, property3: String, property4: Double)
然后,您可以使用map将{1}}
转换为新结构答案 1 :(得分:0)
您需要执行某种transformation(例如map()
)以将属性添加到数据框。