【发布时间】:2018-09-06 13:16:36
【问题描述】:
对我的 RDD 上的 groupByKey 有疑问。以下是我正在尝试的查询:
rdd3.map{ case(HandleMaxTuple(col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25)) => (HandleMaxTuple(col1,col2,col3, col4, col5),(col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25))}.reduceByKey(_+_)
.map{ case(HandleMaxTuple(col1, col2, col3, col4, col5),(col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25))}.groupByKey
我定义的 HandlemaxTuple 案例类用于处理连续处理超过 22 个元组的 Scala 错误。上一个问题在这里解释:number of tuples limit in RDD; reading RDD throws arrayIndexOutOfBoundsException
我想在前 5 列上执行groupBy,我试图将其简化为键列表,然后尝试groupByKey。有人可以帮我解决我上面的groupByKey 方法有什么问题吗?
我的目标是按前 5 列分组,然后聚合得到第 6、7 和 8 列的总和。
【问题讨论】:
-
这里不是很清楚你想要实现什么。你想做
reduceByKey还是groupByKey?据我了解你的问题,你想一个接一个地做吗? (因为键是相同的groupByKey在这种情况下不会做任何事情,数据已经减少了)。 -
@Shaido:嗯,在使用
HandleMaxTuple方法之前,我试图将rdd 与前5 列和第6、第7 和第8 列的总和进行分组,这也是我目前的问题。但是,在介绍了HandleMaxTuple之后,我使用聚合变得有点困难。在上面的问题中,我尝试将前 5 个转换为键,然后使用 groupBy 但这不起作用。 -
我明白了,将前 5 列作为键并减少以获得第 6 列、第 7 列和第 8 列的总和应该是可行的,我将在一分钟内添加答案。
标签: scala apache-spark tuples rdd