通过不同的ID进行分组,并通过map或foreach Spark Scala处理每个组

时间:2018-07-05 02:02:28

标签: scala apache-spark apache-spark-sql spark-streaming

伙计,

需要对分组逻辑和处理超过1000万条记录的建议和帮助。处理必须通过对ID进行分组来完成。每个组都必须输入forEach或map中,并且必须在每个组上调用transform方法。一个组可以包含10-500个记录|

|      ID2    |        senderID    |        targetID    |  app  |
+-------------+--------------------+--------------------+-------+
|1            |                  FG|                  OM| R-type|
|1            |                  FG|                  OM| R-type|
|1            |         DMA.3.450.5|SILO303.FG.RECV.3...|    FRD|
|2            |                  OM|                  FG| F-Type|
|3            |              EFG-NY|             ETP2EFG|    EFG|
|3            |SILO303.FG.RECV.3...|         DMA.3.450.5|    FRD|
|2            |                  OM|                  FG| F-Type|
|3            |          NEXTGEN_CA|              E-Type|    EFG|
|2            |         DMA.3.450.5|TSX.FG.ROUT.3.500.57|     FG|
+-------------------+--------------------+--------------------+--

所以ID2是我需要对记录进行分组的重点。我需要按照如下所示的ID2进行分组,并逐一提供给转换方法。

finalFeed.rdd.map(Groups => (transform(Groups))).collect.toList

但是我认为没有办法做到这一点。由于将数据帧传递到循环中的方法不会在驱动程序上执行。

解决这种情况有哪些选择。

我传递给我的transform(Groups)方法的组将根据senderID,targetID,app进一步分组,然后进行过滤,所有这些都将进行查看以查看该组是否有效。

我应将此DF转换为某些集合,然后传递给我的transform方法。但是后来我将无法应用过滤器,因为它们都是数据框方法。

帮助需要的人。预先感谢。

0 个答案:

没有答案