如何学习函数中参数的值

2024-06-16 15:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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]”的值?你知道吗


Tags: 函数in脚本deflinepysparkfilemodule
2条回答

please let me know how can I learn the value of “joinedRatings[1] “ ?

使用^{}

first()

Return the first element in this RDD.

joinedRatings.first()

^{}__getitem__

take(num)

Take the first num elements of the RDD.

joinedRatings.take(1)[0]

根据上面的代码(不容易阅读),我猜userRatings是一个数组,而joinedRatings是一个PipelinedRDD。似乎PipelinedRDD对象无法使用索引进行访问。e、 g.[1]。这并不奇怪。对象可以支持通过索引访问它们,但它们必须有意识地实现该特性。绝大多数人不这样做,因为这通常对他们没有意义。你知道吗

Python的一个方便的特性是它的内置调试器,特别是对于那些不熟悉Python的人来说。你知道吗

import pdb; pdb.set_trace()

您可以将这一行添加到源代码中并进行调试。这将允许您使用/检查joinedRatings对象。有关更多信息,请参阅

https://docs.python.org/3/library/pdb.html

相关问题 更多 >