为了账号安全,请及时绑定邮箱和手机立即绑定

JavaRDD 等价于 GROUP BY

JavaRDD 等价于 GROUP BY

慕婉清6462132 2022-05-25 16:44:54
我有一个包含以下列(Accident_Id、Date、Area)和数百行的 CSV 数据集。我想要实现的是按区域列分组到可能的唯一组中并找到每个组的计数。我知道如何用 SQLContext 做到这一点,但我不确定它是如何用 JavaRDD 实现的,它的动作(map、reduce 等......)SparkConf conf = new SparkConf().setAppName("test").setMaster("local[2]");JavaSparkContext sc = new JavaSparkContext(conf);JavaRDD<String> data = sc.textFile(pathToCSV);...sqlContext.sql("SELECT COUNT(Area) FROM my_table GROUP BY Area").show();
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您可以简单地制作一对 RDD 并使用它来按其键进行计数。


以下只是假设一个带有逗号分隔记录的字符串 RDD:


Map<String, Long> areaCounts = 

    data.mapToPair(s -> new scala.Tuple2<>(s.split(",")[2], 1L)).countByKey();

这会给你area -> count地图。


如果您更喜欢手动实现归约逻辑,可以使用reduceByKey:


Map<String, Long> areaCounts = 

    data.mapToPair(s -> new scala.Tuple2<>(s.split(",")[2], 1L))

            .reduceByKey((l1, l2) -> l1 + l2).collectAsMap();


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信