Apache spark 如何在Hadoop堆栈中聚合数据?
我想通过一些任意的标准将数据聚合到“bucket”中(比如ElasticSearch,而不是Hive bucketing) 我认为,解释我想要实现的目标的最佳方式是在数据上展示,因此: 基本问题是: 步骤1 我有这样的结构中的数据(当前导入到HIVE ORC表): 现在我想按id对数据进行分组,按桶大小5进行分组,因此我实现了: 步骤2Apache spark 如何在Hadoop堆栈中聚合数据?,apache-spark,apache-spark-sql,aggregate,Apache Spark,Apache Spark Sql,Aggregate,我想通过一些任意的标准将数据聚合到“bucket”中(比如ElasticSearch,而不是Hive bucketing) 我认为,解释我想要实现的目标的最佳方式是在数据上展示,因此: 基本问题是: 步骤1 我有这样的结构中的数据(当前导入到HIVE ORC表): 现在我想按id对数据进行分组,按桶大小5进行分组,因此我实现了: 步骤2 bucket_no | id | category | subcategory | value 1 1 foo bar
bucket_no | id | category | subcategory | value
1 1 foo bar 3
3 foo bar 5
5 foo2 bar1 7
2 6 foo bar2 1
9 foo2 bar 5
3 11 foo bar 10
所以我有3个水桶要处理。这让我想到
高级问题:
在步骤#2上(或可能在步骤#2之后),我想对存储桶执行一些操作,例如,查找每个类别的平均值:
步骤3
bucket_no | category | AVG(value)
1 foo 4
foo2 7
2 foo 1
foo2 5
3 foo
好的,回到#2,我知道我可以按楼层(id%5)对数据进行分组,然后按类别对数据进行分组,并获得平均值(我坚持SQL的思维方式,因为这是我熟悉的技术),以这些数据结尾会让我部分满意,但我想知道如何创建带扣的聚合以及使用哪种工具(应该使用蜂巢、火花或其他),这样我就可以解决现实世界中的问题:
步骤4
我从步骤#1中获得了数据,按id排序。现在我将桶大小更改为11。我想:
bucket_no | category | AVG(value)
1 foo 4
foo2 7
2 foo 1
foo2 5
3 foo
bucket_no | category | subcategory | AVG(value)
1 foo bar 4
2 foo2 bar1 7
bar 5
3 foo bar2 1
4 foo bar 10