我在Pyspark任务中挣扎。我需要获得每个频道的所有观看人数的总和。我有两组文件:1个显示节目和观看节目,另一个节目显示节目和他们显示的频道(可以是多个)。Pyspark元组对象没有属性拆分
我已经在2个文件进行了连接操作,结果看起来像..
[(u'Surreal_News', (u'BAT', u'11')),
(u'Hourly_Sports', (u'CNO', u'79')),
(u'Hourly_Sports', (u'CNO', u'3')),
我现在需要提取通道为重点,然后我觉得做一个reduceByKey得到的总和对渠道的看法。
我已经写了这个函数来提取chan作为键的视图,然后我可以使用reduceByKey函数来求和结果。然而,当我试图显示与收集以下功能的结果()我得到一个“AttributeError的:‘元组’对象有没有属性‘分裂’”的错误
def extract_chan_views(show_chan_views):
key_value = show_chan_views.split(",")
chan_views = key_value[1].split(",")
chan = chan_views[0]
views = int(chan_views[1])
return (chan,views)
谢谢杰夫的快速反应。当我在我的函数中使用该代码时,出现错误“TypeError:'type'object is not iterable”。我的Python知识并不好,所以我会在网上做更多的研究,并找到一些Pyspark的例子来循环数据。但是什么是不可迭代的对象。我认为我的函数只接受另一个RDD的单行作为参数,那么为什么它说它不可迭代? – chucknor
是否在你的例子中提到了我的函数需要的参数'your_list',所以在我的例子'show_chan_views'中?当我尝试下面的代码时,我得到'太多值解包'的第3行的错误。在[96]的:def extract_chan_views(show_chan_views): ....:用于show_chan_views项: ....:FIRST_INDEX,second_index =项 ....:first_sub_index,second_sub_index = second_index ....:return(first_sub_index,second_sub_index) – chucknor
所以你得到的第一个错误告诉我们,无论你想在'for'循环中经历什么都不是可以迭代的东西。检查它是什么。第二个错误意味着当你的对象有三个时,你想解压缩到两个变量。 – Jeff