2

我使用 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 长行进行分片的最佳做法是什么?我希望在 4k-6k 记录中DataFrame,因此必须对长行进行分片,但我不确定计算记录然后更改sharder一定数量的项目是否是 Spark 或 Cassandra 中的最佳实践。

4

2 回答 2

3

拥有 DataFrame 后,您可以定义一个案例类,该类具有新模式的结构和添加的属性。

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

然后您可以使用 map 使用 case 类转换为新结构:df.rdd.map(p => DataFrameRecord(prop1, prop2, prop3, prop4)).toDF()

于 2015-11-13T13:57:15.443 回答
0

您将需要进行某种转换(如map())以将属性添加到数据框。

于 2015-11-13T13:00:27.977 回答