Hadoop 在蜂巢中转换前如何分配?

Hadoop 在蜂巢中转换前如何分配?,hadoop,hive,Hadoop,Hive,在配置单元中,我希望将表按一列分发,并使用python对每个分发的部分进行转换 例如: 我想对具有特定列D编号的记录执行以下操作: from (select * from raw_table where D=12345 sort by A) sb insert overwrite table u_12345 partition (X,Y) select transform(cast(A as double),B,C,D,E,F,X,Y) using 'he

在配置单元中,我希望将表按一列分发,并使用python对每个分发的部分进行转换

例如: 我想对具有特定列D编号的记录执行以下操作:

from
    (select *
    from raw_table
    where D=12345
    sort by A)
    sb
insert overwrite table u_12345
partition (X,Y)
select transform(cast(A as double),B,C,D,E,F,X,Y)
using 'hello.py'
as A,B,C,D,E,F,X,Y
;
现在我想对所有不同的D列数字执行此操作,我编写了如下代码:

from raw_table
insert overwrite table clean_data
partition (X,Y)
select transform(cast(A as double),B,C,D,E,F,X,Y)
using 'hello.py'
as A,B,C,D,E,F,X,Y
distribute by D
;

但它不能按我希望的方式工作。

您可以使用分发子查询:

我还没有测试过这个:

From (select A,B,C,D,E,F,X,Y from raw_table distribute by D)
insert overwrite table clean_data
partition (X,Y)
select transform(cast(A as double),B,C,D,E,F,X,Y)
using 'hello.py'
as A,B,C,D,E,F,X,Y ;
使用我的群集:

create table clean-data as 
select 
transform (key, B,C,D,E,F,G) 
USING 'reducer_script.py' as (key, B,C,D,E,F,G_reduced)
from (key, B,C,D,E,F,G from raw_table distribute by KEY sort by KEY, D ) alias ;