【发布时间】:2021-06-04 22:58:06
【问题描述】:
我有一个数据集,列出了客户购买的一般商品。 csv 中的每条记录从左到右列出客户购买的商品。例如(缩短样本):
Bicycle, Helmet, Gloves
Shoes, Jumper, Gloves
Television, Hat, Jumper, Playstation 5
我希望将其放入 scala 中的 RDD 中,并对它们执行计数。
case class SalesItemSummary(SalesItemDesc: String, SalesItemCount: String)
val rdd_1 = sc.textFile("Data/SalesItems.csv")
val rdd_2 = rdd_1.flatMap(line => line.split(",")).countByValue();
以上是一个简短的代码示例。第一行是案例类(尚未使用)。 第二行从 csv 中抓取数据并将其放入 rdd_1 中。很容易。 第三行做平面图,用逗号分割数据,然后对每个数据进行计数。因此,例如,上面的“手套”和“跳线”旁边会有数字 2。其他 1. 在看起来像元组的集合中。 到目前为止一切顺利。
接下来,我想对 rdd_2 进行排序以列出购买次数最多的前 3 项。 我可以用 RDD 做到这一点吗?还是我需要将 RDD 转移到数据框中来实现排序? 如果是这样,我该怎么做?
如何将第 1 行中的案例类应用到 rdd_2,这似乎是一个元组列表?我应该采用这种方法吗?
提前致谢
【问题讨论】:
标签: scala apache-spark rdd