Hadoop配置单元按类别分组

Hadoop配置单元按类别分组,hadoop,hive,Hadoop,Hive,各位 我们对Hadoop Hive有一个要求 基本上我们有以下格式的数据 客户名称、产品名称、价格 Test,prod1,10 Test,prod2,30 Test,prod3,20 Test1,prod1,20 Test1,prod2,30 Test1,prod2,30 Test2,prod1,50 Test2,prod2,40 Test2,prod2,10 我们需要从上面找到前2名客户[条件是他们的产品价格总和属于前2名] e、 g在上面的示例中,我们需要Test1 sump

各位

我们对Hadoop Hive有一个要求

基本上我们有以下格式的数据

客户名称、产品名称、价格

Test,prod1,10
Test,prod2,30
Test,prod3,20


Test1,prod1,20
Test1,prod2,30
Test1,prod2,30


 Test2,prod1,50
 Test2,prod2,40
 Test2,prod2,10
我们需要从上面找到前2名客户[条件是他们的产品价格总和属于前2名]

e、 g在上面的示例中,我们需要Test1 sumprice=20+30+30=80的记录 测试2 sumprice=50+40+10=100

测试客户不合格,因为价格之和为60

基本上,如果sumprice更符合要求,则前2名客户的客户及其产品列表

预期产出。测试客户的记录不应出现

 Test1,prod1,20
 Test1,prod2,30
 Test1,prod2,30


 Test2,prod1,50
 Test2,prod2,40
 Test2,prod2,10

如何为此编写配置单元查询。

我不确定您的配置单元版本,但我假设我们无法在中使用

您需要创建一个临时表来保存匹配的客户

CREATE TABLE tempp 
    AS SELECT customer, sum(price) as v 
          FROM mytable group by customer ORDER BY v DESC LIMIT 2;
此临时表将包含以下行:

Test2   100.0
Test1   80.0
然后进行左半连接以获得匹配的

SELECT a.* FROM mytable a LEFT SEMI JOIN tempp t ON (a.customer = t.customer)
基于表的输出:

Test1   prod1   20
Test1   prod2   30
Test1   prod2   30
Test2   prod1   50
Test2   prod2   40
Test2   prod2   10

嗨,有没有办法不用创建临时表就在一个查询中完成这项工作。因为如果数据经常更新,我们可能每次都要创建临时表,这并不理想。我正在使用配置单元0.11尝试查看配置单元子查询,并在第二个查询中创建临时表。