Apache Spark - 如何拆分连接的数据集
Apache Spark - How to split a joined dataset
我有一个 (K, (V,W)) 的连接数据集,我正在尝试拆分它以便从数据集中提取 (V,W) 对。我知道我不能 split and/or strip 这对,因为数据类型是元组而不是字符串。但是,我还没有找到绕过的方法 this.Can 有人请告诉我这将如何实现吗?
如果数据集名为joined_dataset并且包含
(show, (channel,views))
这是我在 Python 中的尝试:
def extract_channel_views(joined_dataset):
channel = joined_dataset[1]
views =joined_dataset[1].split(",") ?????
return (channel,view)
更新
所以 - 在 pyspark 中,我试图拆分我的数据集中的对,其中键是 tv_show 的名称和包含 (tv_channel, viewers) 的值。示例输入如下所示:('PostModern_Cooking', ('DEF', 1038))。
我的代码的目的是将这对拆分为 (tv_channel,viewers)。实际上,我只需要获取 joined_dataset 的第二个元素。我的理想输出应该类似于 ('DEF', 1038)。由于这是一个复合值,因此对象类型是 tuple 而不是 string 。不能使用 strip and/or 拆分函数拆分元组。
我设法编写了以下代码,将数据集 joind_dataset[1] 的第二个元素存储到另一个名为 channel_views 的 RDD 中。新的 RDD 本身是一个列表,因此我可以通过调用此列表的第一项和第二项 channel_view[0] 和 channel_view[1] 来简单地将其拆分。所以代码 returns ('DEF', 1038).
def extract_channel_views(joined_dataset):
channel_views = joined_dataset[1]
channel = channel_views[0]
views = channel_views[1]
return (channel,views)
以下代码采用连接数据集 - (K, (V, W))
并检索两个 RDD - (K, V)
和 (K, W)
。我希望这就是你的意思 -
def extract_channel_views(joined_dataset):
channel_views = joined_dataset.map(lambda x: (x[0], x[1][0]))
views = joined_dataset.map(lambda x: (x[0], x[1][1]))
return (channel_views, views)
想法是使用映射函数将键映射到正确的值。
这对我有用:
def extract_channel_views(svc):
return (svc[1][0], svc[1][1])
然后执行映射,提供此函数作为参数。
我有一个 (K, (V,W)) 的连接数据集,我正在尝试拆分它以便从数据集中提取 (V,W) 对。我知道我不能 split and/or strip 这对,因为数据类型是元组而不是字符串。但是,我还没有找到绕过的方法 this.Can 有人请告诉我这将如何实现吗?
如果数据集名为joined_dataset并且包含
(show, (channel,views))
这是我在 Python 中的尝试:
def extract_channel_views(joined_dataset):
channel = joined_dataset[1]
views =joined_dataset[1].split(",") ?????
return (channel,view)
更新
所以 - 在 pyspark 中,我试图拆分我的数据集中的对,其中键是 tv_show 的名称和包含 (tv_channel, viewers) 的值。示例输入如下所示:('PostModern_Cooking', ('DEF', 1038))。
我的代码的目的是将这对拆分为 (tv_channel,viewers)。实际上,我只需要获取 joined_dataset 的第二个元素。我的理想输出应该类似于 ('DEF', 1038)。由于这是一个复合值,因此对象类型是 tuple 而不是 string 。不能使用 strip and/or 拆分函数拆分元组。
我设法编写了以下代码,将数据集 joind_dataset[1] 的第二个元素存储到另一个名为 channel_views 的 RDD 中。新的 RDD 本身是一个列表,因此我可以通过调用此列表的第一项和第二项 channel_view[0] 和 channel_view[1] 来简单地将其拆分。所以代码 returns ('DEF', 1038).
def extract_channel_views(joined_dataset):
channel_views = joined_dataset[1]
channel = channel_views[0]
views = channel_views[1]
return (channel,views)
以下代码采用连接数据集 - (K, (V, W))
并检索两个 RDD - (K, V)
和 (K, W)
。我希望这就是你的意思 -
def extract_channel_views(joined_dataset):
channel_views = joined_dataset.map(lambda x: (x[0], x[1][0]))
views = joined_dataset.map(lambda x: (x[0], x[1][1]))
return (channel_views, views)
想法是使用映射函数将键映射到正确的值。
这对我有用:
def extract_channel_views(svc): return (svc[1][0], svc[1][1])
然后执行映射,提供此函数作为参数。