首页 > 解决方案 > 使用 pyspark 的 Spark RDD 的替代方法

问题描述

我们有以下火花数据框。 在此处输入图像描述

并且需要使用下面的 spark RDD 脚本检查 ID 和名称

data = spark.read.csv("DATA Present in Screenshot")
final_data = spark.createDataFrame([("","","")],["name","ID","Division"])
for id_name in data.select('ID','Name').distinct().collect():
   if str(id_name).split("'")[1] == str(id_name).split("'")[-2]:
       a= str(id_name).split("'")[1]
       b=""
   else:
       a= str(id_name).split("'")[1]
       b= str(id_name).split("'")[-2]
   l = ['div1', 'div2','div3','div4','div5','div6']
   rdd = sc.parallelize(l)
   people = rdd.map(lambda x: Row(Division=x,ID=a,name=b))
   df_data = sqlContext.createDataFrame(people)
   final_data =final_data.union(df_data)

该脚本在小数据集中运行良好,但对于大数据集,它显示以下错误。

message: "Total size of serialized results of 22527 tasks (1921.1 MB) is bigger than spark.driver.maxResultSize (1920.0 MB)" 

修改脚本时有什么方法可以解决此错误。

标签: pythonpysparkapache-spark-sqlrddpyspark-dataframes

解决方案


推荐阅读