0

我在 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))

目前我已经创建了一个函数,它获取开始日期和结束日期并返回 transaction_date 的元组(只是 Date 部分)和 24 大小的数组,其中事务处于活动状态的时间为 1,并将原始 RDD 映射到带有 transaction_date 的 PairRDD (只是日期部分)作为键和数组作为值。在此之后对键执行归约并添加数组的所有单个元素以获得所需的输出。

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

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

4

1 回答 1

0

您可能想要使用flatMap,flatMap您可以为每个输入输出多个(包括零)元素。

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

于 2015-08-26T19:11:39.887 回答