我有两个列表,如:
Hourly_Sports,DEF (show,channel)
Hourly_Sports,21 (show,views)
我已经拆分字符串并使用代码重新排列:
def split_show_views(line):
show,views=line.split(',')
return (show, views)
show_views = show_views_file.map(split_show_views)
def split_show_channel(line):
show,channel=line.split(',')
return (show, channel)
show_channel = show_channel_file.map(split_show_channel)
joined_dataset = show_views.join(show_channel)
现在,当我打电话给"收集"该列表如下:
(u'Baked_Talking', (u'MAN', u'138'))
现在我只想要"频道"和"查看部分" 说明是:
def extract_channel_views(show_views_channel):
<INSERT_CODE_HERE>
return (channel, views)
似乎联合列表已经包含了拆分字符串,因此我无法使用&#34; split&#34;再次运行,我已经检查过python内置函数但没有找到任何提取函数?在我看来,&#34;频道&#34;和&#34;观点&#34;在前面的步骤中定义,所以我不必添加任何东西?如果不是,我该如何定义频道和观看?我试过像show,channel,views=split('',('',''))
这样的东西,我认为没错,但我真的不知道如何做到这一点。
答案 0 :(得分:3)
您可以做的最简单的事情是使用values
方法:
joined_dataset.values()
但是如果你真的想要一个单独的函数,那么你必须知道的是输出RDD的元素是普通的Python tuples
。这意味着您可以使用getitem
:
def extract_channel_views(show_views_channel):
return show_views_channel[1]
或解压缩:
def extract_channel_views(show_views_channel):
_, (channel, views) = show_views_channel
return channel, views
答案 1 :(得分:0)
这两种方法都可以满足您的需求:
def extract_channel_views(svc):
views = svc[1][0]
channel = svc[1][1]
return (channel, views)
或
def extract_channel_views(svc):
cv = svc[1]
views = cv[1]
channel = cv[0]
return (channel, views)