当我打印出rdd的第一个元素时,如下所示:
print("input = {}".format(input.take(1)[0]))我得到的结果是:(u'motor', [0.001,..., 0.9])
[0.001,..., 0.9]的类型是列表。
输入rdd中的元素数等于53304100
当我想广播输入RDD时,我的问题出现了,如下所示:
brod = sc.broadcast(input.collect())生成的异常如下所示(我只显示了exeception的第一部分):
WARN TaskSetManager: Lost task 56.0 in stage 1.0 (TID 176, 172.16.140.144, executor 0): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/worker.py", line 229, in main
process()
File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/worker.py", line 224, in process
serializer.dump_stream(func(split_index, iterator), outfile)
File "/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/spark/2.3.0/python/lib/pyspark.zip/pyspark/serializers.py", line 372, in dump_stream
vs = list(itertools.islice(iterator, batch))
TypeError: <lambda>() missing 1 required positional argument: 'document'发布于 2019-02-25 14:30:51
如果RDD太大,应用程序可能会遇到OutOfMemory错误,这是由collect方法提取驱动程序内存中的所有数据引起的,而内存通常不够大。
所以你可以试着通过以下方式提高你的司机的记忆力
pyspark --driver-memory 4ghttps://stackoverflow.com/questions/54859297
复制相似问题