【发布时间】:2021-09-08 11:47:50
【问题描述】:
我在 emr 集群上将以下代码作为 pyspark 代码运行时遇到问题。我实际上是在尝试创建除以 2 个主键的数据组。切片是主键列的每个唯一组合,完整数据是包含整个数据作为数据框对象的数据框。该对象是使用 sqlContext 构建的。以下在并行运行时失败,抱怨 pickle 库出现序列化错误。具体_pickle.PicklingError: Could not serialize object: TypeError: can't pickle _thread.RLock objects
完成我想做的事情的最佳方法是什么?
def main(slices, fullData):
jsons = slices.rdd.map(
lambda i: handleSlices(i, fullData)).collect() # Run in parallel
# jsons = [handleSlices(i, fullData)
# for i in slices.collect()] # run in serial
return jsons
def handleSlices(row, fullData):
entries = fullData.filter((col("fullData.vehicle_id") == row.vehicle_id)
& (col("fullData.start_time") == row.start_time)).select(
"fullData.latitude", "fullData.longitude")
folder = "/playback/" + row.vehicle_id + "/"
fileName = folder + row.start_time.replace(" ", "_").replace(":", "-")
return (fileName, entries)
【问题讨论】:
-
pickle 在你想并行运行某些东西时会出现一些问题。我过去也遇到过这种情况。检查stackoverflow.com/questions/39897394/…也许我错了。但只是想让你知道。
标签: pyspark amazon-emr