同时在功能和时间聚合数据

时间:2020-05-10 11:38:53

标签: pyspark apache-spark-sql

我有一个pyspark数据帧,间隔为10分钟,如何在一个分类特征上和2小时的时间将其聚合,然后计算其他两个特征的平均值和第三个特征的第一个值

我的样本数据在pyspark中如下所示。我想按“ ind”分组并按“ date”的2个小时的时间分组,然后计算“ sal”的平均值和“ imp”的第一个值

from pyspark import SparkContext
from pyspark.sql import SQLContext

sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

 a = sqlContext.createDataFrame([["Anand", "2020-02-01 16:00:00", 12, "ba"], 
                            ["Anand", "2020-02-01 16:10:00", 14,"sa"], 
                            ["Carl", "2020-02-01 16:00:00", 16,"da"], 
                            ["Carl", "2020-02-01 16:10:00", 12,"ga"],
                            ["Eric", "2020-02-01 16:o0:00", 24, "sa"]], ['ind', "date","sal","imp"])
a.show()

|  ind|               date|sal|imp|
+-----+-------------------+---+---+
|Anand|2020-02-01 16:00:00| 12| ba|
|Anand|2020-02-01 16:10:00| 14| sa|
| Carl|2020-02-01 16:00:00| 16| da|
| Carl|2020-02-01 16:10:00| 12| ga|
| Eric|2020-02-01 16:o0:00| 24| sa|

我不知道如何在groupby Pyspark中混合类别特征和时间(2小时)。我知道如何在熊猫中做到这一点。但是我的真实数据是巨大的。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

为了更好地生成查询,我用几个时间示例扩展了您的案例

head

有多种方法可以实现,这只是其中一种。

要每两小时执行一次汇总,我们将每隔一小时创建一个新列,然后对其进行汇总。

var links = document.evaluate("//div[@data-asin]//h2//a[contains(@href,'/dp/')]/@href", document, null, XPathResult.ANY_TYPE, null ).iterateNext();

因此,在这里,如果我要获取小时数,并且它是否等于零,并且如果小时数是奇数,则将其加1以使其成为下一个偶数小时。

我希望它能解释逻辑。