我有以下RDD代表销售数据:
val rddSales:RDD[((String, String), SalesData)]
我试图制作一个reduceByKey
,其中一个键是由SalesData中的一个(saleType saleDate)组成的字符串。实际上,我想过滤掉saleType saleDate相同的SalesData,然后返回RDD[((String,String),SalesData)]
,不带重复项。
我尝试了以下方法:首先将RDD映射到结构,其中键是(saleType saleDate),值是saleData。然后调用reduceByKey,选择某个键第一次出现的记录。
这是正确的方法吗?如何映射回最初的RDD结构?在reduceByKey之后,我有RDD[((字符串),SalesData)]
rddSales.map(rddSales => (rddSales._2.saleType + rddSales._2.saleDate, rddSales._2)).reduceByKey((a, b) => a)
尝试创建一个tempRdd[(rddSales._2.saleType rddSales._2.soldDate,((String,String),SalesData))],然后在tempRdd上应用reduceByKey。以后的tempRdd可以通过以下方式进行优化:。map()操作。
据我所知,你有一个RDD[((String,String),SalesData)]
,并且想要同样的东西,而不需要按saleType和saleDate重复。如果是的话。。。
使用(String,String)
作为键,而不是将其转换为字符串
并返回,怎么样?然后你就可以用rdd来完成整个过程。还原基((a,b)=
请注意,因为没有保留行顺序,这将给您一个不确定的答案
你好,我经常需要在代码中使用,但我知道这是一个非常繁重的操作。由于我正在努力提高性能,我想知道删除所有调用的方法是否有效。 我使用的是,但是由于这种方法对于大型数据集可能会有很大的问题,所以我想使用这个解决方案: 我所做的不是创建类型对(Int,Int)的RDD,而是创建类型对(Int,list[Int]),所以我的如下所示 你认为有没有更快的方法来达到同样的结果,使用一些其他的方法?谢谢你。
我是堆栈溢出和火花的新手。基本上做RDD转换。 我的输入数据: 我的RDD格式 做一些转换映射([(k, k),(v)],将coll(1,17)作为key,将coll(18)作为Value。并在还原ByKey上应用了一些函数 例子: 我的问题-在函数之后是否可以获取所有其他列,即我的reducedSortedRDD返回类型应该是RDD[(长、长、字符串、字符串、字符串、字符串、字符串、字符串、字符
我使用的是Spark 1.5/1.6,我想在DataFrame中执行reduceByKey操作,我不想将df转换为rdd。 每行看起来像,我有多行id1。 我想有这样的东西: 所以,对于每个“id1”,我希望所有记录都列在一个列表中 顺便说一句,我不想将df转换为rdd的原因是,我必须将这个(减少的)数据帧连接到另一个数据帧,并且我正在对连接键进行重新分区,这使得它更快,我想rdd也不能这样做 任
问题内容: 我有一个包含以下数据的Spark数据帧(我使用spark-csv加载数据): 有什么类似于spark RDD的东西可以返回一个Spark DataFrame如下:(基本上,对相同的键值求和) (我可以将数据转换为RDD并进行操作,但是还有更多的Spark DataFrame API方式可以做到这一点吗?) 问题答案: 如果你不关心列名,你可以使用后跟: 否则最好替换为: 最后,您可以使
问题内容: 我正在尝试使用java作为编程语言来了解Spark中的工作。 说我有一句话“我就是我”。我把句子分解成单词并将其存储为列表。 现在,此函数将分配给每个单词: 所以输出是这样的: 现在,如果我有3个reducer运行,则每个reducer将获得一个键和与该键关联的值: 我想知道 一个。在下面的函数中到底发生了什么。 b。参数是什么 c。基本上,JavaPairRDD是如何形成的。 问题答
主要内容:reduceByKey函数的示例在Spark中,函数是一种常用的转换操作,它执行数据聚合。它接收键值对(K,V)作为输入,基于键聚合值并生成(K,V)对的数据集作为输出。 reduceByKey函数的示例 在此示例中,我们基于键聚合值。要在Scala模式下打开Spark,请按照以下命令操作。 使用并行化集合创建RDD。 现在,可以使用以下命令读取生成的结果。 应用函数来聚合值。 现在,可以使用以下命令读取生成的结果。