gpt4 book ai didi

JavaRDD 相当于 GROUP BY

转载 作者:行者123 更新时间:2023-11-30 05:48:34 24 4
gpt4 key购买 nike

我有一个 CSV 数据集,其中包含以下列(Accident_Id、日期、区域)和数百行。我想要实现的是将“区域”列分组为可能的唯一组,并找到每个组的计数。

我知道如何使用 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();

最佳答案

您可以简单地创建一对 RDD 并使用它通过其键进行计数。

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

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

这将为您提供区域 -> 计数 map 。

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

Map<String, Long> areaCounts = 
data.mapToPair(s -> new scala.Tuple2<>(s.split(",")[2], 1L))
.reduceByKey((l1, l2) -> l1 + l2).collectAsMap();

关于JavaRDD 相当于 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com