我是pyspark的新手,我有一个脚本如下
joinedRatings=ratings.join(ratings)
joinedRatings.take(4)
输出为
[(196, ((242, 3.0), (242, 3.0))), (196, ((242, 3.0), (393, 4.0))), (196, ((242, 3.0), (381, 4.0))), (196, ((242, 3.0), (251, 3.0)))]
在那之后,我就有了功能,那就是
def filterDuplicates(userRatings):
ratings = userRatings[1]
(movie1, rating1) = ratings[0]
(movie2, rating2) = ratings[1]
return movie1 < movie2
我有这个RDD
uniqueJoinedRatings = joinedRatings.filter(filterDuplicates)
我的问题是理解如何运行我编写的这个函数
joinedRatings[1]
我收到的错误是
Fail to execute line 1: joinedRatings[1]
Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-240579357005199320.py", line 380, in <module>
exec(code, _zcUserQueryNameSpace)
File "<stdin>", line 1, in <module>
TypeError: 'PipelinedRDD' object does not support indexing
但是它是在“def filterDuplicates(userRatings):”函数下运行的,没有任何问题,请告诉我如何学习“joinedRatings[1]”的值?你知道吗
使用^{} :
或^{} 与
__getitem__
:根据上面的代码(不容易阅读),我猜userRatings是一个数组,而joinedRatings是一个PipelinedRDD。似乎PipelinedRDD对象无法使用索引进行访问。e、 g.[1]。这并不奇怪。对象可以支持通过索引访问它们,但它们必须有意识地实现该特性。绝大多数人不这样做,因为这通常对他们没有意义。你知道吗
Python的一个方便的特性是它的内置调试器,特别是对于那些不熟悉Python的人来说。你知道吗
您可以将这一行添加到源代码中并进行调试。这将允许您使用/检查joinedRatings对象。有关更多信息,请参阅
https://docs.python.org/3/library/pdb.html
相关问题 更多 >
编程相关推荐