将groupby转换为reduceby键

时间:2019-02-10 14:08:49

标签: python-3.x pyspark mapreduce pyspark-sql

将数据从hdfs文件加载到数据帧,我有一个庞大的pyspark数据帧。我必须进行小组讨论,但是在纱线客户端上却遇到了严重的性能问题。我需要优化代码,因此我尝试在“按键减少”中对分组进行处理 我需要将group by转换为reduce by键,以便可以创建与上述相同的架构。 DATE数据类型为日期时间

def processToRDD(line):
    f = line.split(",")
    return f
myRDD = sc.textFile("hdfs:///myData/zaid/new/all.txt").map(processToRDD)

def processToDF(rdd_line):
    return(Row(DATE = datetime.strptime(rdd_line[0],"%Y-%m-%d").date(),
    IMSI= rdd_line[1],
    SITE = rdd_line[2],
    LINKDOWN = int(rdd_line[3]),
    LINKUP = int(rdd_line[4]),
    COUNT = int(rdd_line[5]),
    CONNECTION = int(rdd_line[6])))

myRows = myRDD.map(processToDF)
myDF = myRows.toDF()
myDF.show()  # pretty!
myDF.groupBy('IMSI','SITE').agg(F.min('DATE').alias('min_of_date'),
                F.max('DATE').alias('max_of_date'),
                F.count('DATE').alias('count_of_date'),
                F.sum('LINKDOWN').alias('sum_of_linkdown'),
                F.sum('LINKUP').alias('sum_of_linkup'),
                F.sum('COUNT').alias('sum_of_count'),
                F.sum('CONNECTION').alias('sum_of_connection')
                ).show()

0 个答案:

没有答案