我在cassandra中有一些数据,其中包含以下数据模型:
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))
目前我创建了一个函数,它接受开始日期和结束日期,并返回事务处于活动状PairRDD与transaction_date(只是Date部分)作为键,数组作为值。在此之后执行键的减少并添加数组的所有单个元素以获得所需的输出。
现在的问题是,有些情况是事务在深夜开始并在午夜后完成,所以在这种情况下我想从我的函数返回2行,这样对于每个事务我在返回的RDD中得到2行
Spark版本:1.2.2
使用的API是Scala
Spark Cassandra连接器版本1.2.2
答案 0 :(得分:0)
您可能希望使用flatMap
,flatMap
可以为每个输入输出多个(包括零)元素。
但是你也提到你正在对键执行reduce,如果在这个阶段你需要输出多个元素时,你可以在reduceByKey
期间生成一个列表然后只做一个标识{{1这将使所有结果变平。