Scala 从spark中的单行生成多行

Scala 从spark中的单行生成多行,scala,apache-spark,spark-cassandra-connector,Scala,Apache Spark,Spark Cassandra Connector,我在卡桑德拉有一些数据,数据模型如下: transaction_id : uuid start_date: timestamp end_date: timestamp PRIMARY KEY(transaction_id) 现在,我想将这些数据转换为: aggregation_date : timestamp number_of_active_transaction_0 : int number_of_active_transaction_1 : int number_of_active_tr

我在卡桑德拉有一些数据,数据模型如下:

transaction_id : uuid
start_date: timestamp
end_date: timestamp
PRIMARY KEY(transaction_id)
现在,我想将这些数据转换为:

aggregation_date : timestamp
number_of_active_transaction_0 : int
number_of_active_transaction_1 : int
number_of_active_transaction_2 : int
...
number_of_open_transaction_23 : int
PRIMARY KEY((aggregation_date))
目前,我创建了一个函数,它获取开始日期和结束日期,并返回一个事务的元组,仅日期部分和24大小的数组,在事务处于活动状态时的小时数为1,并将原始RDD映射到一个PairRDD中,事务的日期部分作为键,数组作为值。在此之后,对键执行reduce并添加数组的所有单个元素以获得所需的输出

现在的问题是,有些情况下事务在深夜开始,在午夜后完成,因此在这种情况下,我希望从函数中返回2行,以便对于每个事务,我在返回的RDD中得到2行

Spark版本:1.2.2 使用的API是Scala
Spark Cassandra连接器版本1.2.2

您可能希望使用flatMap,通过flatMap,您可以为每个输入输出多个(包括零元素)


但是,您也提到您正在对键执行reduce,如果在此阶段您需要输出多个元素,您只需在reduceByKey期间生成一个列表,然后只需执行一个identity flatMap,这将展平所有结果。

我不是在pc前,但是flatMap呢?