将数据从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()