我想将数据汇总到" buckets"通过一些任意标准(如ElasticSearch,而不是Hive bucketing)。
我认为,解释我想要完成的事情的最佳方式是将其呈现在数据上,所以:
基本问题:
第1步
我已经获得了这种结构的数据(目前已导入HIVE ORC表):
id | category | subcategory | value
1 foo bar 3
3 foo bar 5
5 foo2 bar1 7
6 foo bar2 1
9 foo2 bar 5
11 foo bar 10
现在我想按ID分组数据,桶大小为5,所以我实现了:
第2步
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我想对存储桶执行一些操作,例如找到每个类别的平均值:
第3步
bucket_no | category | AVG(value)
1 foo 4
foo2 7
2 foo 1
foo2 5
3 foo
好的,回到#2,我知道我可以按FLOOR(id%5)对数据进行分组,然后按类别进行分组,得到有价值的AVG(我坚持SQL的方式)思考,因为我熟悉它的技术),以这些数据结束会让我部分满意,但我想知道如何创建分块聚合和哪些工具(HIVE,Spark或也许应该使用其他),所以我可以解决现实问题:
第4步
我从步骤#1获得了数据,按ID排序。现在我将我的桶尺寸改为11.我想:
我的最终结果,我想要实现的应该是这样的:
第5步
bucket_no | category | subcategory | AVG(value)
1 foo bar 4
2 foo2 bar1 7
bar 5
3 foo bar2 1
4 foo bar 10