Pyspark 带Pypark reduceByKey的单词包

Pyspark 带Pypark reduceByKey的单词包,pyspark,rdd,reduce,Pyspark,Rdd,Reduce,我正在尝试使用pySpark执行一些文本挖掘任务。我是Spark的新手,我一直在遵循这个示例为我的数据构建一个单词包 最初我的数据是这样的 df.show(5) +------------+---------+----------------+--------------------+ |标题|月份|作者|文件| +------------+---------+----------------+--------------------+ |这是一份文件| |b |二月|玛丽|玛丽写的一本书| |

我正在尝试使用pySpark执行一些文本挖掘任务。我是Spark的新手,我一直在遵循这个示例为我的数据构建一个单词包

最初我的数据是这样的

df.show(5)
+------------+---------+----------------+--------------------+
|标题|月份|作者|文件|
+------------+---------+----------------+--------------------+
|这是一份文件|
|b |二月|玛丽|玛丽写的一本书|
|c | Mar | Luke |报纸文章|
+------------+---------+----------------+--------------------+
到目前为止,我已经用

bow0=df.rdd\
.map(lambda x:x.Document.replace('','','').replace('.','').replace('-','').lower())\
.flatMap(lambda x:x.split())\
.map(λx:(x,1))
这让我

[('This',1),
('is',1),
('a',1),
(“文件”,1)]
但当我试图用reduceByKey计算频率并试图看到结果时

bow0.reduceByKey(λx,y:x+y)。取(50)
我得到这个错误:

---------------------------------------------------------------------------
Py4JJavaError回溯(最近一次调用)
在()
---->1弓箭0.减速球(λx,y:x+y)。取(50)
/take中的usr/local/spark/python/pyspark/rdd.py(self,num)
1341
1342 p=范围(零件扫描,最小值(零件扫描+数值扫描,总零件))
->1343 res=self.context.runJob(self,takeUpToNumLeft,p)
1344
1345项+=res
/runJob中的usr/local/spark/python/pyspark/context.py(self、rdd、partitionFunc、partitions、allowLocal)
990#SparkContext#runJob。
991 mappedRDD=rdd.mapPartitions(partitionFunc)
-->992 port=self.\u jvm.PythonRDD.runJob(self.\u jsc.sc(),mappedRDD.\u jrdd,分区)
993返回列表(_load_from_socket(端口,mapperdd._jrdd_反序列化器))
994
/usr/local/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py in____调用(self,*args)
1131 answer=self.gateway\u client.send\u命令(command)
1132返回值=获取返回值(
->1133应答,self.gateway\u客户端,self.target\u id,self.name)
1134
1135对于临时参数中的临时参数:
/装饰中的usr/local/spark/python/pyspark/sql/utils.py(*a,**kw)
61 def装饰(*a,**千瓦):
62尝试:
--->63返回f(*a,**kw)
64除py4j.protocol.Py4JJavaError外的其他错误为e:
65 s=e.java_exception.toString()
/获取返回值(应答、网关客户端、目标id、名称)中的usr/local/spark/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py
317 raise Py4JJavaError(
318“调用{0}{1}{2}时出错。\n”。
-->319格式(目标id,“.”,名称),值)
320其他:
321升起Py4JError(
Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.runJob时出错。
:org.apache.spark.sparkeexception:作业因阶段失败而中止:阶段31.0中的任务1失败4次,最近的失败:阶段31.0中的任务1.3丢失(TID 84,9.242.64.15,executor 7):org.apache.spark.api.python.python异常:回溯(最近一次调用):
文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/worker.py”,主文件第177行
过程()
文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/worker.py”,第172行,正在处理中
serializer.dump_流(func(拆分索引,迭代器),outfile)
文件“/usr/local/spark/python/pyspark/rdd.py”,第2423行,在pipeline_func中
返回函数(拆分,上一个函数(拆分,迭代器))
文件“/usr/local/spark/python/pyspark/rdd.py”,第2423行,在pipeline_func中
返回函数(拆分,上一个函数(拆分,迭代器))
文件“/usr/local/spark/python/pyspark/rdd.py”,第346行,在func中
返回f(迭代器)
文件“/usr/local/spark/python/pyspark/rdd.py”,第1842行,组合形式
merge.mergeValues(迭代器)
文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/shuffle.py”,第236行,合并值
对于迭代器中的k,v:
文件“”,第1行,在
AttributeError:“非类型”对象没有属性“替换”
位于org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193)
位于org.apache.spark.api.python.PythonRunner$$anon$1。(PythonRDD.scala:234)
位于org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152)
位于org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:63)
在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:323)上
位于org.apache.spark.rdd.rdd.iterator(rdd.scala:287)
位于org.apache.spark.api.python.PairwiseRDD.compute(PythonRDD.scala:404)
在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:323)上
位于org.apache.spark.rdd.rdd.iterator(rdd.scala:287)
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)上
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)上
位于org.apache.spark.scheduler.Task.run(Task.scala:108)
位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:338)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
运行(Thread.java:748)
驱动程序堆栈跟踪:
位于org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1517)
位于org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1505)
位于org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1504)
位于scala.collection.mutable.resizeblearray$class.foreach(resizeblearray.scala:59)
在scala.collection.mutable.Ar