【发布时间】:2017-01-28 17:40:24
【问题描述】:
我有一个非常大的包含这些列的时间序列数据表:
- 时间戳
- 车牌
- UberRide#
- 速度
LicensePlate/UberRide 数据的每个集合都应考虑整个数据集进行处理。换句话说,我不需要逐行处理数据,而是按 (LicensePlate/UberRide) 分组的所有行一起处理。
我计划将 spark 与 dataframe api 一起使用,但我对如何对 spark 分组数据帧执行自定义计算感到困惑。
我需要做的是:
- 获取所有数据
- 按某些列分组
- Foreach 火花数据帧组应用 f(x)。为每个组返回一个自定义对象
- 通过应用 g(x) 并返回单个自定义对象来获取结果
如何执行第 3 步和第 4 步?关于我应该使用哪个 spark API(dataframe、dataset、rdd、也许是 pandas...)的任何提示?
整个工作流程如下:
【问题讨论】:
-
Pandas 不是 Spark 的一部分,您可以使用
DataFrame但您将使用 have to do it in Scala 和 add Python wrapper,RDD 应该可以正常工作。 -
不能直接使用Spark吗?我正在使用 Spark 1.6.2
-
如果你指的是 PySpark,那么就像我说的那样 - RDD 应该可以正常工作。
-
在向新手提问之前,我会进一步调查究竟如何使用 rdds... :-)
-
@NischalHp : df.rdd.keyBy(lambda x: (x['key1'], x['key2'])) \ .groupByKey() \ .map(lambda groupped_data: my_map_fn(分组数据))
标签: apache-spark dataframe group-by dataset pyspark